perm filename UUO.UPD[S,DOC]87 blob
sn#405867 filedate 1978-12-28 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00023 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 This file contains corrections, additions and updates to the UUO Manual,
C00016 00003 25. THE NEW AD & DA CONVERTERS (JAM)
C00033 00004 26. The CORE2 UUO will take the direct (error) return if you ask it
C00041 00005 38. PDP-11 INTERFACE (19-MAY-74 -- BO)(14-apr-76)
C00048 00006 39. File protection for disk files: the "same programmer, other
C00061 00007 51. Interrupts will NOT terminate a SLEEP UUO prematurely. The
C00064 00008 58. Date75 11/11/74 updated 11/22/74
C00069 00009 59. XGP default margin settings
C00079 00010 [ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]
C00086 00011 84. Job Data Area Symbols.
C00095 00012 104. [OBSOLETE: SEE #106]
C00101 00013 113. New line characteristics bit DMLIN, 40000,,0, means line is a Datamedia.
C00113 00014 115. PPINFO UUO--Minor changes to bits returned in word 2 of info block.
C00121 00015 130. UPGIOT UUO for Datamedia (DM) displays.
C00138 00016 131. SUPERS bit (0,,100) in fourth word of SETACT table suppresses
C00157 00017 161. Two new MTAPEs have been added for device DISK and UDP in either new or
C00165 00018 172. The following devices have been added. They are all on the PDP-6 (P3)
C00179 00019 173.
C00183 00020 [ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
C00184 00021 177. TTYSET function 17 (get responsible TTY) returns -1 if no TTY
C00191 00022 187. The following new TTYSETs are defined:
C00227 00023 249. TTYSET operation number 41 is "hang up modem", only works on DCA
C00246 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.
1. The only UUO spacewar processes on the PDP-6 can issue is the
DISMIS UUO. (I think any UUO given on the 6 has the effect of DISMIS.)
2. On p. 126, the 2nd line of 1st paragraph should read "even" instead
of "ever".
3. In disk file protection key, read protection (2 bit) implies
protection protection (4 bit) for any group of users.
4. INTJEN UUO turns on bits in the interrupt mask, not in the interrupt
enablings.
5. Non-ARPA PTYs never run LOGOUT when logging out. ARPA PTYs do run
LOGOUT.
6. RENAME can be done after ENTER without doing a CLOSE first unless
the file being renamed is replacing an existing file (another file
had same name when ENTER was done). In that case a CLOSE must be
done first (which will delete the original file).
7. IOPUSH CHN,ID ;[OP=724]
<pdlov>
<channel pushed>
Pushes io channel CHN on io pdl. Channel CHN may now be used
without affecting the device you pushed. The ID is saved with
the channel for use with IOPOP and IOPDL.
8. IOPOP CHN,ID ;[OP=725]
<stack empty>
<success>
Finds first channel on stack with ID searching down from top. If
ID = 0 then uses top of stack. If not found, takes error return.
Releases channel CHN, places the device from the stack into that
channel, and compresses that entry out of the stack.
9. IOPDL N,ID ;[OP=726]
IOPDL 0,
Does IOPOP for each device on the io pdl. The channel it
uses is the same one the device was pushed from.
IOPDL 1,
Releases all devices from stack without affecting devices
not currently pushed on stack.
IOPDL 2,ID
<error return>
<device released>
Finds device with ID same as for IOPOP, then releases it
without affecting any other devices. The stack is compressed.
10. MOVE AC,[CODE,,JOB #]
GETPRV AC, ;[OP=047, ADR=400115] CALLI 400115
<always return here>
If job # illegal, uses current job.
CODE = 0
Get active privileges for job #. Return them in AC.
CODE = 1
Get passive privileges for job #. Return them in AC.
CODE = 2
Get temporary privileges for job #. Return them in AC.
11. TTYSKP CHN, ;[OP=047, ADR=400116] CALLI 400116
If no device on channel CHN, "IO TO UNASSIGNED CHANNEL" error.
If not TTY, never skip.
If TTY, will skip if next input will not hang.
12. MOVEI AC,ADDR
DIAL AC, ;[OP=047, ADR=400117] CALLI 400117
<error return, error code in AC>
<success return>
ADDR: DIALER #,,FUNCTION CODE
<any further args as needed>
Error codes:
0 Illegal dialer #.
1 Dialer in use by someone else.
2 Don't meet ownership requirements (currently, don't have TTY11
inited)
3 Attempt to dial while call in progress (should hang up first)
4 Dialing failure.
Function codes:
0 Claim dialer. Must be done before any other function can be
performed with this dialer #.
1 Get dialer status. Returns in AC:
<last interrupt coni>,,<current coni>
2 Dial a number. ADDR+1 is area code in the following format:
Bit 0 17 18 21 22 25 26 29 30 35
__________________________________________
| | | | | |
Digit | | 1 | 2 | 3 | |
|______________|_____|_____|_____|_______|
ADDR+2 is the rest of the number in this format:
Bit 0 5 6 7 8 11 12 15 16 19 20 23 24 27 28 31 32 35
_____________________________________________________
| | | | | | | | | | |
Digit | |A|V| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|_____|_|_|_____|_____|_____|_____|_____|_____|_____|
A on, dial area code.
V on, call is "VOICE" call. Will switch to AD/DA when call
completed. Not implemented yet!
3 Hang up.
4 Release dialer (automatically done if you release TTY11).
13. LOOKUP followed by ENTER now updates date/time in UFD entry for file.
14. RUNMSK is now a no-op (may become illegal soon).
15. WHO AC, ;[OP=047, ADR=400112] CALLI 400112
AC right should contain address of 22-word block for returned asciz
string.
If AC left contains legal job #, return who line for that job as
asciz text.
If AC left = 0 or > legal job #, return who line for current job.
If AC left < 0, return system who line.
If no job for legal job #, returns null string.
16. TTYJOB AC, ;[OP=047, ADR=400113] CALLI 400113
If AC is 0 to max TTY line number, returns in AC the job # of owner.
Sign bit will be on if this is not owners "console".
If AC is -<PTY line #>, returns in AC the job # of job controlling PTY.
All other args return 0 in AC.
17. PTYs are initialized with bits 6 (PTYLIN), 10 (PTYUSE), 13 (FCS)
and 16 (XON) (4222,,0 bits) on in the line characteristics. The UUO
manual (p. 48) does not mention the FCS bit being on for a new PTY.
18. In the UUO manual on the first line of p. 148 (section 13.3), it
should say "(bit 28)" instead of "(bit 31)" (bit to set to get error
return instead of error message when LPT is hung).
19. IMP MTAPE 13 (Bless Host) is now a no-op since there is no longer
a system table of dead hosts. All hosts are assumed alive except for
an instant after the IMP network has returned a Host Dead message in
response to an attempt by us to send that host a message.
20. PPACT does erase all deactivated pieces of paper even on
Data Discs. See also note number 56 in this file.
21. When doing 8-bit byte buffered IMP output, any of the four bytes
in the last used word in any buffer can be suppressed from being
transmitted to the IMP by setting the corresponding bit of the low
order four bits of the same word. For example, if the word pointed
to by the byte pointer in your output buffer header contains
776655,,443307, then only the first (high-order) byte of this word
will be transmitted. That is,
bit 32 (0,,10 bit) suppresses the first byte (776000,,0 byte),
bit 33 (0,,4 bit) suppresses the second byte (001774,,0 byte),
bit 34 (0,,2 bit) suppresses the third byte (3,,770000 byte),
bit 35 (0,,1 bit) suppresses the fourth byte (0,,007760 byte).
22. The DEVNUM UUO is listed four times in the manual as CALLI 4000104
whereas it should really be CALLI 400104 (deleting extra zero).
23. The left half of each entry in the JOBJDA block of the job data
area contains the channel-status bits, as returned (in the right half
of an AC) by the CHNSTS UUO. However, these bits and the device data
block (DDB) address in the right half are not kept up to date by the
system. These cells are guaranteed correct only when your job is not
running; they will in general also be correct if you have not done
any I/O since the beginning of the current quantum of run time.
24. The left half of a TTY's entry in TTYTAB (see monitor pointers)
contains the number of the next TTY in the given TTY's talk ring, if
that TTY is in a talk ring; when a TTY is not in a talk ring, the
left half of its TTYTAB entry contains the TTY's own line number.
25. THE NEW AD & DA CONVERTERS (JAM)
The new analog-to-digital converter (ADC) and digital-to-analog
converter (DAC) are devices on the PDP-6's IO bus which may be
operated in dump mode (17) only. They provide input and output of
digitized waveforms conventionally representing speech, music, or
other acoustical signals.
Both the DAC and the ADC can operate in a manner such that the data
transfer UUO (INPUT, or IN, for ADC, OUTPUT, or OUT, for DAC) does
not wait for the transfer to finish before returning to the user.
This feature is enabled by the 100 bit (called CONT) in the IO status
word. In this case, the user must have three separate buffers. There
is the buffer that the device is operating on, the one that is
waiting, and the one the user is operating on. If you use just two
buffers, you may find that you are operating on the same buffer the
system is operating on. As you give data transfer UUOs, the first one
will start the transfer and return immediately. The second one will
store the IOWD and return immediately. It is not until the third one
is given that the UUO will wait. It will wait for the buffer
specified by the first UUO to become free, and start the second
buffer, before it will accept the address of the third buffer and
return.
If either the ADC or the DAC loses a sample, the LOST bit (bit 2000)
is set in the IO status word. This means a discontinuity has occured
in the signal.
The ADC can be data-triggered. By setting the CYCLE bit (bit 200) in
the IO status word, the ADC does not move beyond the first buffer,
but instead transfers continuously into the first buffer. When it
gets to the end of the first buffer, it goes back to the beginning
automatically. This process continues until a sample comes in that is
larger than some threshold (user settable). When such a sample
occurs, the system goes on to the second buffer and returns to the
user the position in the first buffer that the triggering sample
occurred. For effeciency, the compare is not made with each sample in
the word, but instead with just the high-order sample. You must be in
CONT mode to guarantee continuity between the first and second
buffers.
When the ADC in CYCLE mode goes to the second buffer, the CYCDON bit
(20 bit) is set in the IO status word. You can cause the ADC to start
cycling again by clearing this bit. This is only useful if you know
which buffer it is in. It will go into CYCLE mode on the next buffer.
The ADC and the DAC can be made to start simultaneously. This is done
by turning on the IOSYNC bit (40 bit) in the IO status words of both
devices (they are different devices, require different INITs). What
happens is that the first data transfer UUO (of either device) does
not actually start the transfer. When the first data transfer UUO for
the other device is given, then both devices will begin. Note that
either UUO (ADC or DAC) can be given first. The second UUO will start
the transfer. You must be in CONT mode for the device whose UUO is
given first, or you will not return from the UUO. The system will
only wait one minute between the two UUOs.
If you are in CYCLE mode on the ADC, and in IOSYNC mode on both
devices, you can specify that the DAC is to be started after the ADC
is advanced to the second buffer and not just at the beginning of
input. This is done by setting the IOAFT bit (bit 4000) in the ADC IO
status word. This will prevent the DAC's being started until the ADC
advances to the second buffer.
The device-specific bits of the IO status word are shown below. The
asterik represents bits that are only meaningful to the ADC.
Bits Octal Mnemonic Meaning
*24 4000 IOAFT Begin DAC only after ADC has
moved on to second buffer, i.e.
IOSYNC∧IOAFT∧CYCDON ⊃ Start DAC
25 2000 LOST Data missed
*28 200 CYCLE Causes ADC to transfer repeatedly
into the first buffer until
some input sample exceeds a
preset threshold.
29 100 CONT Causes system to return to the
user immediately from a data
transfer UUO.
30 40 IOSYNC ADC and DAC will be started
simultaneously.
*31 20 CYCDON Indicates ADC has moved from
first input buffer to the
second. Only relevant in
CYCLE mode.
To set parameters like sampling rate, channel multiplexing, and such,
the MTAPE UUO has been drafted to serve this special function. An
MTAPE to either the ADC or the DAC has as its effective address the
address of a 3-word (2-word for DAC) block which is formatted as
follows:
<*CYCLE threshold>,,<Speed*1000+Packing*100+Nchans>
<address for `RUN' flag>
<*Input select>,,<*address for CYCLE pointer>
Speed is coded as follows:
Code Clock rate (per channel!!!)
0 6.4KHz
1 12.8KHz
2 25.6KHz
3 51.2KHz (Highest ADC rate)
4 102.4KHz
5 204.8KHz
Packing is coded as follows:
Code Packing mode
0 12-bit two's complement bytes packed 3 to a word
1 18-bit two's complement bytes packed 2 to a word
2 9-bit incremental floating-point bytes packed 4 to a word
(DAC only)
Note that the 18-bit byte has only 16 significant bits for the DAC
and only 14 significant bits for the ADC. In the DAC, the low order 2
bits of each byte are ignored. In the ADC, the low order 4 bits of
each byte are set to zero.
These packing modes are diagrammed below:
12-bit mode (code 0):
____________________________________________________________
|0 11|12 23|24 35|
| SAMPLE 1 | SAMPLE 2 | SAMPLE 3 |
|___________________|__________________|___________________|
18-bit mode (code 1):
____________________________________________________________
|0 17|18 35|
| SAMPLE 1 | SAMPLE 2 |
|___________________________|______________________________|
9-bit mode (code 2, DAC only):
____________________________________________________________
|0 3|4 8|9 12|13 17|18 21|22 26|27 30|31 35|
| EX1 | MANT1 | EX2 | MANT2 | EX3 | MANT3 | EX4 | MANT4 |
|_____|_______|_____|________|_____|_______|_____|_________|
This last mode is called Incremental floating point (abbreviated IFP
mode). Each 9-bit byte is decoded into a 4 bit exponent and a 5-bit
mantissa. The mantissa is shifted left the number of places
represented by the number in the exponent and is added into the
current position of the DAC to produce the new position. The sign bit
is inferred from the mantissa, it is not explicit. The sign bit is
taken to be the complement of the high order mantissa bit, and is
spread throughout the number before the shifting occurs.
To restate, the DAC has, for each channel, a 16 bit register, called
the FLTMEM register. These registers are cleared at the beginning of
a transfer. In IFP mode, a 9-bit byte is unpacked from the input
word. The high order 4 bits of that byte go into a counter, the low
order 5 bits go into the low-order 5 bits of a 21 bit (16+5) shift
register. The complement of the high order bit of the mantissa is
stored in the high-order 16 bits of that 21-bit shift register. This
entire register is shifted left the number of places (0 to 15)
represented by the number currently in the counter (the exponent).
The high order 16 bits of this register are then added into the
FLTMEM register for this channel and the sum is stored back into the
FLTMEM register. This sum is also delivered to the DAC.
Notice that this means that a 9-bit byte with all bits zero does not
represent a change of zero in the FLTMEM register. A zero byte will
infer a sign bit of 1, which will be spread throughout the word and
will result in a word of -1. 20 is the `official' code for zero. This
has the high order bit of the mantissa on and all other bits zero.
Nchans is decoded as follows:
Code Meaning
0 unused. Currently same as 3.
1 Monaural (1-channel only)
2 Stereo (2 channels)
3 Quadraphonic (4 channels)
For multiple channels, successive samples go to successive channels.
For example, in Stereo mode (code 2), the first sample goes to
channel 1, the second sample goes to channel 2, the third sample goes
to channel 1 again, the fourth to channel 2, and so on.
In CYCLE mode for the ADC, the input is directed into the first
buffer until the high order sample in a word exceeds the threshold.
This threshold is specified in the left half of the first word of the
MTAPE block.
The right half of the second word of the MTAPE block is the address
of the `RUN' flag (may be zero to inhibit feature). When the ADC or
the DAC is started, this cell is set to -1. When the ADC or DAC is
stopped, this cell is set to 0. In this manner, one can tell when his
transfer is actually occurring. Since the ADC and the DAC are given
separate MTAPEs, they can have separate RUN flags, as well as
separate clock rates, numbers of channels, and packing modes.
The third word of the MTAPE block is only relevant to the ADC. The
right half specifies the address where the buffer pointer is to
be places in CYCLE mode. What you get is the IOWD at the point
the threshold was exceeded, relocated to a relative address within
your core image. The address part of this word (the right half)
will point to the word containing the sample that exceeded the
threshold.
The left half of the third word of the MTAPE block specifies the
input multiplexing address for the ADC. Not only are there four input
channels that are serviced sequentially, but all four channels can be
switched to an alternate four inputs. This is specified by setting
the sign bit of the third word of the MTAPE block to 1. At some point
in the future, this left half may contain an honest multiplexing
address, such that input can be obtained from any of a number of
sources, but for now, you just have the four main channels and the
four alternate channels.
Neither the ADC nor the DAC take a standard monitor dump mode command
list. The effective address of the UUO points to a single IOWD. It
does not have to be followed by a zero.
26. The CORE2 UUO will take the direct (error) return if you ask it
to make a new upper segment for you and there are no job slots
available.
27. PTJOBX command number 7 is CLRBFI. It has the effect of having
done a CLRBFI for the TTY specified by the PTJOBX.
28. LOOKUP followed by ENTER updates date, time, PPN, and job name of
creator in file retrieval.
29. New UUO: TMPCRD [CALLI 400103] (formerly XPARMS) to read TMPCOR
files of another job. Calling sequence is
MOVE AC,[<code>,,ADR]
TMPCRD AC,
<error return>
ADR: <filename>,,<job number>
IOWD BLEN,BUF
<PPN for TMPCOR file>
BUF: BLOCK BLEN
Just like TMPCOR but only codes 0, 1, and 4 allowed. Illegal UUO
if non-allowed code; error return if no such job.
A job number of zero, or your own job number, refers to your own
TMPCOR files; in this case, all operations are allowed, and the
only difference from TMPCOR is that the PPN for the file comes
from the UUO. If ADR+2 is zero, the login PPN (not ALIAS) of the
specified job is used.
30. Remote users may not:
start spacewar modules; do EIOTM; or start an interrupt program in
IOT-user mode. Spacewar and EIOTM
get error messages, and interrupt programs are started ok but with
IOT-user off.
31. MTAPE to DSK where first word of arg block is neither 'GODMOD' nor
-1 returns the value of the uset pointer.
32. Error code number 1 to INTDMP is non-existant job number.
33. If the job name or number field in the INTIPI UUO is zero then
your own job is assumed.
34. More complete description of new-style clock interrupts:
Clock interrupts may be enabled by turning on the INTCLK bit
in the interrupt enablings. This starts the clock ticking regardless
of the state of the interrupt mask. If the clock interrupt should
try to occur when it is masked off, then the bit is set in JBTIRQ
anyway, i.e., the interrupt is pending and will occur as soon as it
is masked on. Disabling the clock interrupt deletes the clock
request and any pending clock interrupt. The time between clock
interrupts is one tick. The CLKINT UUO enables clock interrupts and
and sets the time between interrupts to the effective address of the
UUO. It no longer masks on the interrupt so that it is possible to
do a guaranteed indivisible operation involving clock interrupts.
Giving this UUO also flushes any pending clock interrupts that may
exist. If the effective address of the UUO is zero then clock
interrupts are disabled and any pending clock interrupt is flushed.
35. All new interrupt system UUOs that required a 1 in the ac field to
indicate processor 1, no longer have that restriction.
36. LINE EDITOR MOD. AFFECTING PTLOAD AND INWAIT
If the 40000,,0 bit (bit 3) in a TTY's line characteristics word
is a 1 when a PTLOAD uuo is executed for that TTY, the line editor
passes to the program every character typed on the keyboard during
the re-edit. These characters, including the activation character
which terminates the re-edit, appear ahead of the re-edited line, and
should be read in 9-bit mode to see the control bits. The activation
character is followed by a character code of 400 (<meta>NULL), an
otherwise impossible code; the next character will be the first of
the re-edited line.
An INWAIT executed after the PTLOAD will function as usual,
returning the length of the re-edited line, unless enough characters
are typed during the re-edit to nearly fill the TTY input buffer. In
this case, the program will be activated and the INWAIT will return a
length of 0; the program should then read one or more of the
characters in the buffer (but not too many, or the re-edit will be
terminated) and loop back to the INWAIT.
The 40000 bit may be set and cleared by SETLIN, and is
cleared by RESET.
37. RENAME UUO can now rename a file from one PPN to another. This capability
is implemented in COPY (e.g., "RENAME FOO[A,B]←BAZ[C,D]" is legal).
38. PDP-11 INTERFACE (19-MAY-74 -- BO)(14-apr-76)
Physical device name: ELF
See IFACE.BO[11,DOC] for details about the hardware.
You may INIT this device in dump mode (mode 17). The IN and OUT
UUO's take a single IOWD as their operand.
I/O status bits (SETSTS/GETSTS UUO's):
Bit(s) Name Meaning
18 IOIMPM Improper mode specified in INIT.
19 IODERR An error occurred during the last data transfer
(NXM11, BUSTO, PARITY, HUNG).
20 --- unused
21 NXM11 No response from the addressed UNIBUS location.
22 BUSTO Interface couldn't get the UNIBUS.
23 IOACT not used
24 BUSNIT You lost because a Unibus reset is going on.
25 PARITY Bad parity indication
26 HUNG Interface is hung irretrievably
27 --- unused
28 BGRAB Interface is holding onto the UNIBUS
(The PDP-11 is hanging).
29 NRETRY Don't retry on NXM11 or HUNG.
30:35 have the same meaning as in any other I/O device.
If NXM11 or HUNG is on, the system has tried 10 times before giving up
unless NRETRY is on. It always retries 10 times on BUSTO.
OTHER UUO'S
USETI CHN,ADR or USETO CHN,ADR
<only return> <only return>
ADR: MODE,,BUSADR
USETI and USETO set the data transfer mode and beginning UNIBUS
address for the following IN and OUT UUO's.
If bit 0 of the word at ADR is on, the mode is set from bits 13:17.
If bit 0 is off, the mode remains as it was before. The mode bits are
Bit(s) Name Meaning
13 NOPAR Ignore parity errors
14 GRAB Hold on to the UNIBUS during and after the transfer -
any error condition that sets IODERR will release the bus.
15 SGNEXT Extend the sign of input data.
16:17 Data packing mode, decoded as:
00 ONEWD one PDP-11 word per word, right adjusted
01 TWOWD two words per word, right-adjusted in each halfword
10 TWOWDR two per word, in right 32 bits
11 TWOWDL two per word, in left 32 bits.
In the two-word modes, the higher-order PDP-11 word is the one at the
first UNIBUS address. Sign extension has no effect in TWOWDL; it
operates on each halfword separately in TWOWD.
If bit 17 of the contents of ADR is on, the corresponding bus address
is set from bits 18:35. If off, the address remains where the last
IN or OUT left it, pointing to the UNIBUS address immediately
following the last word transferred. Mote that these are word, not
byte, addresses.
UGETF CHN,ADR
<only return>
ADR: <USETI word>
<USETO word>
UGETF reads the states of the two USET pointers and modes into a
two-word block starting at ADR. The results are stored with bits 0
and 18 on so that a subsequent USET addressed to one of these words
will set both the mode and the bus address.
RELEAS CHN,
<only return>
RELEAS resets the interface and clears its interrupt enablings, and
sets the USET pointers to 400000,,400000.
MTAPE CHN,ADR
<error return>
<normal return>
ADR: <instruction>
<data>
MTAPE does various things depending on the contents of ADR. ADR+1
either contains data that will be written to the 11 or receives data
read from the 11. In case of an error, DEVIOS contains the reason.
The general form of the <instruction> is
Bits Meaning
0:8 Operation code
9:12 unused
13:17 mode, interpreted as in a USETI or USETO
18 unused
19:35 UNIBUS address.
The mode and address of an MTAPE have no effect on the USET pointers
or the operation of subsequent IN's and OUT's, except that the BGRAB
state of the interface (and the BGRAB bit of DEVIOS) reflect the
state left by the last operation performed.
Op code = 1: FILL
<data> = <number>,,<const>
Writes <const> into <number> words beginning at the specified address.
Ignores mode bits 16:17.
Op code = 2: PEEK
Reads one or two PDP-11 words (depending on the mode) into ADR+1.
OP code = 3: POKE
Writes <data> into one or two PDP-11 words.
Op code = 4: BUSREL
Clears the interface, making it release the UNIBUS if it is in BGRAB
mode. BUSREL also clears the BGRAB bit in DEVIOS. The mode and
Bus Address bits are ignored.
Op code = 5: PWRTRP
Simulates a power fail trap on the pdp-11. I.E. the 11 traps thru
24. Note it does this 2 times, once on power down and once on power up.
39. File protection for disk files: the "same programmer, other
project" category is no longer used. Instead, the three categories
of protection are file owner (700 bits), other local users (070
bits), and other remote users (007 bits). The meaning of individual
bits is unchanged within each category for files other than UFDs.
The bits in the protection code for a UFD now affect protection for
files in that UFD, i.e., 4 bit prevents protection change for all
files in the UFD, 2 bit prevents LOOKUPs in the UFD and also prevents
reading the UFD as a file, and the 1 bit prevents ENTERs and RENAMEs
(except protection change) in the UFD. As in the file protection
code, the 400 and 200 bits are ignored by the monitor. ENTER or
RENAME of a UFD is illegal except that privileged programs (i.e.,
LOGIN and LOGOUT) can create new UFDs or delete old ones. Only the
owner of a UFD can change its protection (except for privileged
programs). Anyone may read the MFD but no one may modify it. Also,
there is a "default file protection code" associated with each UFD.
An ENTER of a new file with a user-specified protection of zero uses
this default value. An ENTER which is replacing an existing file
retains the old protection code if the user-specified code is zero.
The default file protection code for a UFD can only be set by LOGIN.
The values used for new UFDs are 005 for the UFD protection and 000
for the default file protection. Thus remote users may not write
files in most UFDs.
40. The IMPBIT in the line characteristics word for a terminal (1000,,0)
can be set but not cleared by the user (by SETLIN or PTSETL). That is,
once you set it, you're stuck with it.
41. Anything which unpurifies an upper segment (e.g., UNPURE UUO) also
changes its jobname by shifting it right one character (six bits), so
that the pure, sharable version will still have a unique name.
[42 is obsolete now!!!!!]
42. Bit 29 (100) must be on in any INIT, OPEN or SETSTS to the UDP to
denote old-format UDP service. (A new format is being planned.)
[No longer true!!!]
43. Error reponse from the XGP/Font Compiler has been expanded.
Case of MTAPE function 0, ADR+1 contains 4, ADR+2 contains 3, and
if ADR+3 contains either 3, 4 or 7 then ADR+4 will contain the octal
value of the last character assembled (or possibly the current character
being assembled).
44. P121 FBWRT UUO. Should say MOVEI AC,<band number> rather than
MOVEI AC,<logical fast band number>
45. P122 next to last line. Should read .... If you
rather than ... If you have
46. The DEVCHR UUO for a UDP now returns bits 18 and 19 as the OR of the
ASSCON and ASSPRG bits of all DDBs for that UDP. Bit 12 (available to
this job) is also set properly, i.e., the bit is on if the UDP is unused,
public, or private and owned by this job. Note that in a DEVCHR for DSK
or IMP, bits 18 and 19 will always be zero, since they are copied out of
the model DDB. If the UDP is in new mode (see 48 below), the DVDSK bit
(bit 1) will be on as well as the DVUDP bit (bit 2).
47. The DEVUSE UUO for a UDP returns, in bits 12:17, the job number of
the UDP's owner, if any. A zero in this field but bit 0 on MAY NOT
mean detached from system for a UDP, but rather assigned as public.
To be sure, check bit 7, which will be on for detached UDPs. The
following extra bits are set for UDPs:
3 40000,,0 ASSIGNed by this job
4 20000,,0 INITed by this job
5 10000,,0 ASIGNed by some other job
6 4000,,0 INITed by some other job
7 2000,,0 ASSIGNed as PRIVATE pack (by someone)
If bits 12:17 are zero, and bits 6 and 7 are one, the UDP is being used
as the swapping device. Again, note that the information returned for
DSK or IMP is wrong.
48. UDPs may now be used in "old" or "new" mode. Old mode is like
before; new mode is just like DSK, with the following exceptions:
a. MTAPEs which refer to absolute disk addresses are taken relative
to the first track (the SAT track) of the particular UDP used, and
are limited to the extent of that one UDP. (DSK MTAPEs still allow
all tracks to be used, including UDP tracks.)
b. The SATID for a UDP is a SIXBIT name which is intended to agree
with the name written on the pack label. This is not to be confused
with the UDP password.
c. The last track of the UDP is still used for a password, as in
old mode; however, the password need not be given for new-mode
operations, which are protected by the same scheme as on DSK. The
UDP password is also stored as the [1,1] password.
It is illegal to INIT a UDP unless you have ASSIGNed it
first. The ASSIGN command for UDP, unlike other devices, does not
necessarily prevent access by other users. There are three ways
of ASSIGNing a UDP:
PUBLIC -- new mode, other jobs may use the UDP.
PRIVATE -- new mode, other jobs may not use the UDP.
OLD -- old mode, other jobs may not use the UDP.
(The syntax of the ASSIGN command is ASSIGN [mode] dev [logname] ;
items in brackets are optional, default mode is PUBLIC.) The
mode may be changed between PUBLIC and PRIVATE by new ASSIGN
commands except that you must be the only user of the UDP to make
it PRIVATE. However, to change between old and new modes, you
must first deassign the UDP (there must be no DDBs for it).
The mode specified in the ASSIGN command controls the use of the
UDP; hence, the 100 bit in the INIT is no longer used.
A pack to be used in new mode must first be formatted.
(I.e., must have SAT and MFD.) Once a pack has been formatted,
attempts to write on it in old mode will fail unless you have
UDPPRV. Old mode reading is ok. (So much for read protecting
UDP files.) Attempts to read or write in new mode on an
unformatted UDP will, of course, fail.
The scratch/swapping pack has password *SWAP*. This
password is treated specially by the monitor in two ways: a zero
password is accepted in an old-mode ENTER, and it is impossible
to change the password (old-mode RENAME will fail).
49. Two new MTAPEs for DSK and file-structured UDP:
MTAPE CHN,[ 'GODMOD'
22
ADDR]
will store the number of free tracks on the UDP (or in the file
system for DSK) as typed by the RESO command. This is the number
of tracks before the monitor will not allow an ENTER, which is
=200 tracks before the structure is really full. Also,
MTAPE CHN,[ 'GODMOD'
23
ADDR]
stores the SATID of the structure. Both store into user address ADDR.
50. Device VOD REG 8/16/74
The voice synthesizer (VODER) has device name VOD. Mode 10 (octal)
is the only legal mode. The buffer size is 20 (decimal) data words.
The data in the user's buffer is sent directly to the voder.
The Voder interface interprets each word as four 9-bit bytes. The
400 bit of each byte is the valid bit. The other eight bits represent
a phoneme. Care should be taken to avoid the phoneme with value zero,
because this will cause the voder to stop, and the rest of the buffer-full
will not be transmitted until later, and data may become lost.
For a description of the correspondence between phonemes and byte-values,
see section 21 of the facility manual, FACIL.TED[H,DOC]
DEVCHR of VOD is DVOUT and a bit for mode 10. There is no special DEVCHR
bit for the voder. Only the UUOs OPEN (and INIT), OUT (and OUTPUT),
CLOSE and RELEAS are valid for the voder. LOOKUP, ENTER, RENAME, and MTAPE
are no-ops.
51. Interrupts will NOT terminate a SLEEP UUO prematurely. The
SLEEP will run to completion unless a UWAIT is done at
interrupt level when the SLEEP is in progress. The comment
in the manual under the SLEEP UUO that says an interrupt
will terminate the SLEEP immediately is WRONG.
52. The definitions on pp. 104-105 of the manual of the bits
INTPTO and INTPTI are reversed. The descriptions of what
the bits mean are correct, but the bit values are interchanged.
INTPTO is really bit 8 (1000,,0) and INTPTI is bit 5 (10000,,0).
53. When a new job is started up with the SWAP UUO, the privilege bits
of the old job are copied to the new job if the new job is getting
the login PPN of the old job. Otherwise, the new job's privileges
are cleared.
54. Correction to manual. Mode 16 for MTAs is exactly the same as mode 17.
55. In Appendix 1 of the UUO Manual (III Display Processor), under
the CHR Instruction on p. 191, change the character octal 177 generates
to a Circumflex (instead of a backslash).
56. The PPSEL UUO normally does a PPACT with only the newly selected PP
activated. This can now be inhibited by turning on the 400000 bit in
the PP number. Thus PPSEL 1 will do a PPACT 200000 but PPSEL 400001
will not. Also, contrary to what the manual says, PPACT on a Data
Disc does erase any PPs turned off (de-activated).
57. Clarification: The suppress Control-CR (set via SETACT) is effective
even if the terminal is not in special activation mode. Same goes for
other special low-order bits in the last word of activation table.
58. Date75 11/11/74 updated 11/22/74
January 4, 1975 is the last date representable in the old PDP-6 format
date field. The following changes have been implemented to extend the
dates for an additional 77 years.
1. DATE UUO [CALLI 14]
returns a 15 bit date, instead of 12 bits as previously documented.
2. Disk file dates
LOOKUP and RENAME have been changed to use bits 18-20 of
the second (extension) word of the argument block as the high bits
of the date last written. The low bits of the date last written
are bits 24-35 of the third word.
3. Dectapes (PDP-6 format)
LOOKUP returns the date in bits 24-35 of the third word
and bits 18-20 of the second word.
RENAME accepts a date in the same format.
ENTER ignores the date entirely; files always get their
date set to the current date by ENTER.
Note that the 15-bit date will actually be stored in bits
21-35 of the third word of the directory entry, and the split
field in LOOKUP and RENAME arguments is only for compatability
with the disk UUOs. Note that people who try to interpret the
data returned by LOOKUP should avoid being confused by the high
order date field which is returned in (bits 18-20 of) the halfword
which formerly contained only the first block number of the file (now
confined to bits 21-35).
ENTER, by the way, returns the block number of the first block of
the file in bits 21-35 of the second word.
4. Dectapes (PDP-10 format)
The extra date bits are smeared in the extra bit of the slot words.
The format is too horrible to explain here, see REG if you really
want to know. This affects only user programs since pdp-10 dectapes
are not supported by the system. The programs 6TO10, 10TO6, and
DMAN are NOT supported and will be not be converted. TENDMP will
be supported for PDP-10 dectape manipulation.
5. DSKTIM UUO
[Added 11/21/74] This UUO does NOT and will not return the correct
date after Jan 5, 1975. The date field returned by this UUO is
constrained to 12 bits. For a single UUO to get the date and time
(in seconds) use ACCTIM. The DSKTIM UUO will shortly be made illegal.
Conversion of programs to DATE75.
The following rules should be followed:
ENTER
The only date field that's relevant is the creation date in bits
21-35 of the extension word (disk only). If you wish to set the
creation date use this field, otherwise zero it.
LOOKUP
works as before; if you want to print the file's date last written
you must get that date from two words returned by LOOKUP.
RENAME
To get the default date and time, zero bits 9-35 in the third word, and
bits 18-20 in the second word. Otherwise, set these fields explicitly.
59. XGP default margin settings
LMAR 200
RMAR 1650 may vary with number of raster points/scan-line
TMAR 200
PMAR 1802 varies with the number of scan-lines/inch
BMAR 200
XLINE 4
The numbers above are all in decimal. Parameter names correspond to
XSPOOL switches. Some parameters are subject to change as the
physical charateristics of the XGP change. Parameters are changed
manually, so if you observe the XGP making short pages, etc., tell
REG or anyone else who knows how to change these settings
Nominally, the XGP has 200 raster points/inch horizontally, and 200
scan-lines/inch vertically.
The horizontal sweep is known to be non-linear, so if you're trying
to do exact graphics you'll probably lose.
60. A clarification about dectapes (PDP-6 format). REG 11/19/74
When an ENTER is done, if the fourth word is negative, it is assumed
to contain the IOWD for writing a DMP file. Note that DMP files
are written differently than other files on a dectape.
Normal files are written 127 words/block with a 1 word header that points
to the next block of the file (always the next block on the tape, or zero).
DMP files are written 128 words/block and always in consecutive blocks
and the IOWD for retreiving the file is in the directory.
60. In 8-bit IMP input, unused bytes in the last data word are flagged
by bits turned on in the four normally unused bits (32-35) with the
same significance as for IMP output (item 21, page 2). The value of
such unused bytes will always be zero, as before, so only programs for
which zero bytes are significant need worry about this.
61. Two new XGP escape sequences:
177 1 50 accepts the next byte as the intercharacter spacing.
Note this command is currently a no-op and is included for
compatibility with MIT.
177 1 51 is like stop underline (177 1 47) except the first
byte following the 51 allows the user to specify how thick
the underline will be. (The second byte following the 51
is taken in two's complement as the relative number of the
scan line on which to do the underline - same meaning as
underscore - 177 1 41 - see uuo manual).
62. Documentation error in description of bit 4 of function code
for data disk command word. In text mode, Bit 4 ON means double
width, OFF means single width. (The picture on page 199 is right)
63. Once the UDP has been assigned in PUBLIC mode, any job may
INIT or OPEN it without having to ASSIGN it itself.
64. Additional discussion of XGP error codes (REG 12/30/74)
XGPSER missed error (code 12 from error status MTAPE) returns
in ADR+2 the current scan line, and in ADR+3 the desired scan line
number for the text or vector that missed. XGPSER is not able to
queue text or vectors for scan line 0 of the first page of a transfer.
If it's necessary to queue things on scan line 0, it's advised that
a page be output prior to that attempt.
65. The TMPCOR and TMPCRD UUOs allow two new function codes, 6 and 7,
which are like 4 and 5 respectively (read directory, read and clear
directory) with the following differences:
a. All TMPCOR files for the specified job are listed, regardless
of alias (and deleted in function 7).
b. The directory list returned contains two words per file; the
first is the file's alias PPN, and the second is its name and size as
in the normal directory list. The AC specified in the TMPCOR UUO gets
the number of TMPCOR files, as usual.
66. Mode '1000 in LPTSER suppresses the TODF (top of double form)
that precedes the first output following CLOSE and the three TODFs that
occur at RELEAS. The suggested use for this mode is by programs that
use special forms (e.g., labels). Users of this feature should explicity
send a TODF ('177&'021) to the LPT before RELEAS to initialize the LPT
for the next user.
67. The description of JOBSYM (on page 206) should be corrected:
change
"the left half of this word contains the negative of the number of
symbols"
to
"the left half of this word contains the negative of the length of
the symbol table"
68. The SWAP UUO when used to write a DMP file changes JOBNAM to
the name of the file it writes.
69. The NULMES UUO (CALLI 400114) is just like TTYMES with the following
exceptions:
--The count field must be nonzero.
--A zero byte does not end the text, but is simply ignored. (It is
included in the count.)
--If the error (direct) return is taken, the AC containing the argument is
set to zero if the UUO failed because the TTY could not be found (no
such device, not a TTY, couldn't get a DDB); otherwise it is set to the
number of characters remaining to be sent. Thus the user can recover
from a temporary jam in the output buffer.
70. Magtape MTAPE uuo. If bit 40 is set in the effective address then the
"slice level" will be set from bit 20. Setting the slice level may enable
some tapes to be read which otherwise had errors. Also, setting the slice
level may be used as a maintenance feature. RELEAS uuo (or MTAPE 40) will
clear the slice level to normal.
[THIS FEATURE (70.) HAS BEEN DISABLED. USER CAN NO LONGER SET SLICE LEVEL.]
71. If you do an UNPURE uuo after having done a SETPR2, then the following
will happen:
1. if you did an absolute SETPR2, then nothing is changed and the
direct return is taken.
2. if you did a relative SETPR2, then the write protection is cleared
for you second protect and relocate register and the skip return is
taken.
Correction to description of SETUWP uuo: if the job has no upper segment
and hasn't done a SETPR2, then direct (non-skip) return is taken. If the
job has done a SETPR2, then a SETPR2 is done with the original parameters
and with the write protect bit in the requested state.
72. The 10000,,0 LINTAB bit, which formerly meant "model 37" (ha ha), now
indicates that characters less than 40 should be echoed (and output) as
uparrow followed by the character 100 greater than the real character,
except for 0 (null, not output), 7 (bell), and 11-15 (the format effectors).
This bit is initially on for TTY0-TTY11. It is ignored for Data Disc and
III displays. It can be set or cleared by SETLIN and PTSETL or by the
monitor commands TTY ARROW and TTY NO ARROW.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]
73. The PTLOAD UUO now takes any text typed by the user before or during
the PTLOAD and writes it into the line editor after the PTLOAD is over,
in such a way that no timing error is possible. A new UUO, PTL7W9
(PTYUUO 17,) allows the simulation of user typeahead; the format is
PTL7W9 ADR
ADR: <PTY number as for PTLOAD, usually 0>
<address of, or byte pointer to, 7-bit ASCII string as for PTLOAD>
<address of, or byte pointer to, 9-bit string of simulated typeahead>
The 9-bit string must be terminated with null (000). The UUO loads the
7-bit string pointed to by ADR+1, positions the cursor to the beginning
of the line, then simulates typing of the 9-bit string pointed to by ADR+2,
then simulates typing of any characters which the user had typed while
all this was going on.
To make this work, a new TTY IOS bit is used: PTLIP (4000,,0) for
PTLOAD in progress. The bit is on during a PTLOAD and diverts user
typeahead to a special buffer.
74. The 0,,10 bit in the fourth word of a SETACT argument (the bit name
is EMODE) causes a meta-null (400) character to be inserted in the TTY
input buffer after each line editor activation, following all characters
activated. Thus when an activation character is typed in the middle of
a line, the program can find out where the line ends. The 400 is an
activation character, in the sense that all of the text up to and including
it will be available to INCHWL. (Normally when the line editor is
activated by a character other than return in the middle of the line,
the program can only read (with INCHWL) up to the activation character,
not up to the end of the line, until another activation character is
typed.) Despite its use of a 400 code, this feature is not to be
confused with losing Poole mode.
75. The UPGIOT UUO effectively does a PGSEL for the POG in the UPGIOT.
76. The 0,,20 bit in the fourth word of a SETACT argument (the bit
name is BSACT) causes backspace with any combination of control and
meta bits (including none) to activate the line editor and be made
available to the user program if the line is empty. Works on TTYs
too.
77. The 0,,40 bit in the fourth word of a SETACT argument (the bit
name is ALLACT) causes all characters with either or both of control
and meta on plus backspace to activate except in re-edited lines.
78. Although the manual is correct, it should be noted in the device
dependent writeup for Dectapes that LOOKUP does not return the
file information as it is stored in the directory on the Dectape.
79. DSK 'GODMOD' MTAPEs 1 and 2 no longer take the sign bit of
ADR+3 to signify extra tracks at the end of system pack 0. There are
no extra tracks there. [Page 149]
80. UDPs (OLD and NEW) are now =15485 tracks long, not =15200. This means
that the password now lives in track number =15484. [Page 176]
81. The writeup on LOOKUP/ENTER/RENAME in the UUO manual should
mention that the ppn field is ignored for lookups on a channel opened
for device SYS, and that [1,3] is always used instead.
82. [OBSOLETE: SEE #106]
The GETHI UUO puts addresses 1000000 to 1377777 into a user's
upper segment address space (read only). This UUO skips on success.
GETHI is temporary and is intended for UEDDT only! Future versions
of the system will supercede this UUO with a more general mapping
function.
83. VDSMAP operation code 6, formerly unused, is now used for "set
line tied to". Bits 0, 1, and 9 of the AC argument are ignored.
Bits 11:17 must specify a physical Data Disc terminal number (not a
shadow line). The right half of the AC, instead of a pointer to a
channel map, should contain as an immediate operand the number of a
Data Disc line to which the specified physical screen should be tied.
If AC RH is zero, the screen is tied to the line to which its keyboard
is mapped. This operation requires the UPG privilege and skips on success.
It returns the map word which the given physical screen sees after the
UUO, i.e. the map for the line specified in AC RH if successful.
84. Job Data Area Symbols.
Appendix 2 has several typos, several ommissions, and some errors.
Only the symbols in the following list should be referenced by users
since all other locations in JOBDAT are subject to reshuffling, on
the assumption that no DMP files reference this data.
JOBDAT.MAC[CSP,SYS] contains the definitions that users get to see.
JOBUUO,40 ;USER UUO TRAP LOC.(UUO STORED HERE)
JOB41,41 ;USER UUO JSR LOCATION
JOBERR,42 ;IN WHICH RPG SYSTEM PASSES ERRORS TO THE LOADER
JOBENB,43 ;Interrupt enablings
JOBREL,44,1 ;RH=HIGHEST REL. ADR. IN USER AREA
JOBINT,71 ;TO SEPARATE OLD AND NEW INTERRUPT SYSTEMS
JOBHCU,72 ;HIGHEST USER IO CHANNEL IN USE
JOBPC,73 ;JOB PC WHEN JOB INACTIVE
JOBSAV,73 ;LAST LOCATION NOT SAVED BY SAVE COMMAND
JOBDDT,74 ;RH=STARTING ADDRESS OF USER DDT
JOBJDA,75 ;JOB DEVICE ASSIGNMENT TABLE
JOBHRL,115 ;UPPER SEGMENT PROTECTION. LH=BITS
JOBSYM,116 ;POINTER TO LOADER AND DDT SYMBOL TABLE POINTER
JOBUSY,117 ;POINTER TO UNDEFINED SYMBOL TABLE
JOBSA,120 ;LH=INITIAL JOBFF, RH=STARTING ADDRESS
JOBFF,121 ;FIRST FREE LOCATION IN USER AREA
JOBS41,122 ;C(JOB41) SAVED HERE ON SAVE COMMAND
JOBREN,124, ;REENTER ADDRESS FOR REENTER COMMAND
JOBAPR,125 ;PLACE TO TRAP TO IN USER AREA ON APR TRAP
JOBCNI,126 ;APR CONI BITS ARE STORED HERE ON APR TRAP
JOBTPC,127 ;PC IS STORED HERE ON USER APR TRAP
JOBOPC,130 ;OLD PC IS STORED HERE ON START,DDT,REENTER
JOBCHN,131 ;LH=FIRST LOC AFTER FIRST FORTRAN 4 LOADED PROGRAM
;RH=FIRST LOC AFTER FIRST FORTRAN 4 BLOCK DATA
;TO BE USED FOR JOB CHAINING
JOBCOR,133 ;SIZE OF CORE FOR JOB ON RUN,SAVE,GET COM.
JOBVER,137 ;JOB VERSION
JOBDA,140 ;FIRST LOC NOT USED BY JOB DATA AREA
85. SWAP UUO will now save upper segments. Set bit 35 in the extension word
of the save arguments. Despite what it says in the manual, SWAP does not
affect the upper, unless it does a GET. REG 9/28/75
86. Addendum (page 13). IOBKTL can come on for the PTR under two circumstances:
a. In mode 1 (Ascii Line) if no activator (LF or FF) is seen before filling
the buffer.
b. In mode 14 (Checksummed Binary) if the data word count (right half of the
first word of a block) exceeds the buffer size.
87. Addendum (page 30). REASSIGN UUO will assign (by console) a device
that is either assigned (by console) or inited (assigned by program).
Therefore, since reassign can assign to the same job as issues the uuo,
a job can assign to itself (by console) any device that it can init.
(Note that the IO channel is released, so you'd have to init it again, etc.)
88. APRENB UUO (page 124).
89. Use of JOBERR (see item 84)
RPG uses JERR in the following way: Initially it zeroes the right half before
starting the first translator. If a translator detects a source program error
from which it can continue, it should set the right half of JOBERR non-zero.
The LOADER checks this halfword to decide whether to start execution or to type
the "EXECUTION DELETED" message.
90. Device VOD and its device service have been flushed.
91. Device service for AD has been flushed, but AD still exists for hand input,
but must be servoed by user program on the PDP6.
92. Error codes for INTDMP, INTIPI, JOBRD have been changed slightly. See UUOCON.
93. SETSTS UUO if changing i/o mode may call device to futz with your buffers.
94. In SWAP UUO, for phantom startup, if no extension is given, DMP is assumed.
(It was already documented, incorrectly, as doing that.)
95. SETLIN UUO allows TBXPND to be set for TTYs and network-PTYs.
96. Typo, page 179 (ADC/DAC) "dveice" should be "device"
97. Bug fix in FILINF (DSK MTAPE). It reads 4 words.
98. Documentation change for DSK MTAPEs. Functions 10,11,15 apply to a 4-word
block of retrieval. Various places which refer to 5-words are wrong
(writeups for functions 10, 11, 14, 15). The file offset word is not a
part of the special retrieval area.
99. ADCSER changes. (see also 103)
Clearing CYCDON is a no-op.
IOAFT is not currently implemented.
100.User ACs after GET and RUN
0: Filename in SIXBIT of dump file
1: Extension in SIXBIT of dump file,,normal RH returned by LOOKUP
2: Normal stuff returned by LOOKUP
3: PPN of dump file
4: PPN of dump file
101.In a dump file with an upper segment, the upper is considered write
protected if the sign bit of HILOC is set. When the dump file is
in core, this bit is clear and write protection is indicated by the
sign bit of JOBHRL.
102. The description of what 272 points to is inadequate. see FAIL page 7
or talk to REG or JBR for more details.
103. Device ADC has been flushed. Instead, device DAC can be used for
both dump mode input and output, but not both (a RELEASE is necessary
to change directions).
The MTAPE to device DAC is changed: Bit 0 of ADR+1, if on, denotes
setting ADC parameters, if off, denotes setting DAC parameters.
The motivation for making this change is to allow the DAC to run
at (or closer to) full speed. The full generality of both input
and output may be reimplemented if the DAC/ADC is moved to the
mappiplexor.
As a consequence of not being able to do both I and O simultaneously,
all references to IOSYNC, IOAFT have been flushed.
104. [OBSOLETE: SEE #106]
GETHI uuo, with non-zero ac field signifies attach 1,400000 ff as the
upper (with read and write permission). This UUO is intended for
debugging the Suppes' memory only, and will not long endure.
105. CORE2 UUO has been changed slightly.
1. if core2 fails in getting core for a new segment, the new segment is killed.
2. if core2 fails because of access violation it no longer detaches the
segment from you (code changed to conform to documentation).
3. if core2 fails because of access violation, it returns in user's ac
the number of K available to him (code changed to conform to documentation).
4. if core2 fails because you wanted a new segment and there are no job slots
available, the number of K available is NOT returned in the user's ac
(documentation is incorrect).
5. if user requests 0K for the upper, the upper is always detached, and
if there are no other users of the upper, it is killed. Access checking
is not done (documentation is incorrect).
106. GETHI UUO. This definition should still be considered temporary!
CALL: MOVE AC,[# of pages,,first physical page*40+flags]
GETHI AC,
<ERROR>
<OK>
Flags are: 20 - write enable
10 - parity error suppress
error return occurs if:
# of pages exceeds 400
first physical+number of pages exceeds TMEMSIZ
if write enable is specified and user doesn't have ACWPRV
Suppress parity error bit works as follows. When a parity error
occurs on P1, in user mode, not PI in progress, and the current
job has a GETHI upper with the parity error suppress bit set
then the parity error is ignored entirely!
This UUO adds the specified physical pages to your map starting at
virtual page 400.
This UUO is temporary and is supplied for UEDDT and certain memory
diagnostics.
107. Meaning of FULTWX [page 44]
FULTWX on means that the line is "self-echoing full duplex", i.e.,
system echoing is not necessary. TTY ECHO clears FULTWX, and
TTY NO ECHO sets it.
108. Pre-shuffle and Post-shuffle interrupts will no longer be given.
[These haven't worked for some time.]
109. Lowcore pointer to JBTADR (loc 223) has been flushed. JBTADR will
be flushed soon. Meanwhile, JBTPAG (lowcore pointer at 324)
contains <page count,,first page assiged to user>
JBTSWP now contains in the right half two nine bit fields for
IMGOUT(bits 18:26) and IMGIN (bits 27:35) which are out and
in image page counts (formerly K).
Also affected: CORMAX - # of pages of user space
BIGHOLE # of pages in biggest hole
CORTAB is presently one 9-bit byte per page, but it will
change soon to prevent an ILDB from working.
110. New privilege: ATTPRV, bit 18 (0,,400000). Allows ATTACH command
to attach phantoms and turn on JLOG.
111. Other new lowcor pointers:
317 XMSET pointer to 9 words of XGP default settings for:
TMAR, PMAR, BMAR, LMAR, RMAR, XLINES, XTNODE, XVNODE
and XGPBLN. (XGPBLN is not settable by users.)
320 RTRHCT pointer to table of retry counts
321 TBLKPT,,TPJMP
322 DPHPOS,,PPCALL
323 PPRJMP,,PPNO
324 JBTPAG
112. New LTHUUO used to put upper into high core or take it out of high core.
NOTE: THIS UUO IS TEMPORARY ONLY. IF YOU PUT THIS UUO INTO SOME PROGRAM,
PLEASE TELL REG SO THAT THE UUO CAN BE REMOVED WHEN IT IS FLUSHED IN THE
SYSTEM.
MOVEI AC,0 ;Put segment in high core
LTHUUO AC,
<couldn't move you to high core>
<segment is now in high core>
or
MOVEI AC,1 ;Put segment in low core
LTHUUO AC,
<return here always, with segment in low core>
113. New line characteristics bit DMLIN, 40000,,0, means line is a Datamedia.
TTYFIL bit ignored for Datamedias.
114. New TTYSET UUO to diddle various things about the user's attached TTY,
and occasionally to find out things about other TTYs.
MOVE AC,[-LENGTH,,TABLE]
TTYSET AC,
TABLE: BLOCK LENGTH ;Block of operations to be performed.
Each word in TABLE is a function word representing a specific
operation, with the op code being in the high-order 9 bits (bits
0:8, 777000,,0). The remaining bits of the function word are
used as arguments to the operation, with the meaning of specific
bits being dependent on the particular op code. The currently
defined op codes are listed below. More op codes will be added
from time to time. A function word containing an op code larger
than the largest one currently defined will cause the job to get
the system error message Illegal UUO.
Bits 0:8 Meaning of op code, interpretation of argument(s)
-------- -------------------------------------------------
000 No-op.
001 Turn on indicated line characteristics bits.
Ones in any of bits 18:35, representing line characteristics bits
0:17, indicate line characteristics bits you want turned on. No
indication is given of attempts to turn on illegal bits; they simply
are not turned on.
002 Turn off indicated line characteristics bits.
Ones in any of bits 18:35, representing line characteristics bits
0:17, indicate line characteristics bits you want turned off. No
indication is given of attempts to turn off illegal bits; they simply
are not turned off.
003 Get line characteristics and line number.
The address field (bits 18:35, 0,,777777 bits) of this function
should point to a word to receive the returned line characteristics
in the left half and your tty line number in the right half. The
returned word will contain -1 if the job is detached.
004 Execute ESC or BREAK command.
This function performs the operation normally carried out when an ESC
or BREAK command is typed on a display's keyboard. However, the TTY
attached to the job executing this function does NOT have to be a
display. If the TTY is not a display and the ESC/BREAK command given
applies only to displays, then this function will be a no-op. The
only ESC/BREAK commands currently meaningful on non-displays are:
ESC/BREAK F,I,X,Z. This function is recommended over the PTY writing
UUOs because it does not interfere with actual typein from the
keyboard (including ESC and BREAK commands typed from the keyboard).
The low-order 7 bits of the function word (bits 29:35, 0,,177 bits)
are taken as an ASCII character to be "typed" preceded by ESC or
BREAK. Bits 18:26, 0,,777000 bits, of the function word are
interpreted as the numeric argument to the command. The command will
be ESC if bit 27 (0,,400) is off (zero) and BREAK if this bit is on
(one). For example, <004000,,"W"> will do ESC W, and <004000,,520>
will do BREAK P (120 is "P"). Escape commands that affect the physical
TTY rather than the one to which you are mapped cannot be executed with
this UUO; these include all the video switch and audio switch escape
commands and the mapping commands (ESC/BRK +*ADSTUBM and BRK L).
005 Set TTY WIDTH.
This function sets the maximum TTY line width for output of text to
the TTY, as the TTY WIDTH command does. DD and III ignore this width
as do non-ARPA PTYs.
006 Get TTY WIDTH.
The maximum line width for the TTY is returned in the word pointed to
by the right half of the function word. E.g., 006000,,2 will return
the TTY width in AC 2, 006000,,140 will return it in user location 140.
007 Get TTY horizontal position.
The horizontal position of output and echoing is returned in the word
pointed to by the right half of the function word.
010 Inhibit CONTROL-CR once only now.
The CONTROL-CR feature of reloading the last line activated from the
line editor (displays only) is inhibited for right now only. This is
a useful function to execute immediately after a program has read a
password or other secret information that should not be displayed.
Thus the last line activated at the time this function is given cannot
be retrieved with CONTROL-CR. If there is already text in the line editor
at the time this function is given, then this function is a no-op.
011 Turn on selected bits in TTY's IOS word.
Bits on in the right half of the function word are turned on in your attached
TTY's I/O status bits. You cannot set the IOACT bit (0,,10000 bit).
012 Turn off selected bits in TTY's IOS word.
Bits on in the right half of the function word are turned off in your attached
TTY's I/O status bits.
013 Return TTY's IOS status word.
The I/O status word for your attached TTY is returned in the word pointed to
by the right half of the function word.
014 Turn on or off special DM bits.
This function has no effect if your job is not running on a Datamedia display
(DM). If bit 35 (0,,1 bit) is on in the function word, your DM is flagged
as capable of displaying the control characters (1:37 octal) when they are
sent following an ASCII escape (octal 33). If bit 34 (0,,2 bit) is on in
the function word, your DM is flagged as NOT capable of displaying the
control characters. If bit 33 (0,,4 bit) is on in the function word, your
DM is flagged as NOT wanting the line editor displayed in blinking/bold
(e.g., your DM doesn't have blinking and bold interchanged). If bit
32 (0,,10 bit) is on in the function word, your DM is flagged as wanting
the line editor displayed in blinking/bold. The remaining bits in the
function word are reserved for future uses.
015 Get display's screen height.
If the 400,,0 bit is on in the function word, then this function returns
the number of screen lines for the display whose line number is given in
the 177,,0 bits of the function word. If the 400,,0 bit is off, the
number of screen lines for your own display is returned. The number of
screen lines is returned in the word whose address is in the right half of
the function word. The value returned will be zero if the specified
terminal is not a display.
016 Set DM display's screen height.
This function has no effect if your job is not running on a Datamedia
display (DM). The number of lines the system considers your DM to have is
set from the right half of the function word. Currently, this number must
be at least 8. If the right half of the function word contains a (signed)
value less than 8, then the default number of screen lines, namely 24, is
used for your DM. Note that after you give this function, a screen reset
(e.g., ESC N or UUO RESET) is necessary to actually cause the number of
lines used by your page printer to take into account your new screen
height.
CPOPJ ;0 ;NO-OP
LINSET ;1 ;TURN ON GIVEN LINE CHARACTERISTICS BITS
LINCLE ;2 ;TURN OFF GIVEN LINE CHARACTERISTICS BITS
GETLN2 ;3 ;GET LINE CHARACTERISTICS
TTESC ;4 ;DO ESC COMMAND
TTWID ;5 ;SET TTY WIDTH FIELD
GETWID ;6 ;GET TTY WIDTH OR DPY WIDTH
GETHP ;7 ;GET TTY HORIZONTAL POSITION
NOCCR ;10 ;PREVENT USER FROM DOING CONTROL-CR NOW ONLY
STIOS ;11 ;TURN ON GIVEN IOS BITS
CLIOS ;12 ;TURN OFF GIVEN IOS BITS
GTIOS ;13 ;GET TTY'S IOS BITS
DMDIDL ;14 ;DIDDLE SPECIAL DM BITS
GDPHGT ;15 ;GET DPY HEIGHT (LINES/SCREEN)
SDPHGT ;16 ;SET DPY HEIGHT (DMs ONLY)
115. PPINFO UUO--Minor changes to bits returned in word 2 of info block.
Ones in the following bits now indicate information as follows:
Bit 0--TTY is a III
Bit 1--same as always (screen erased by ESC command)
Bit 2--DD page color is green on black
Bit 3--TTY is a DM (Datamedia terminal)
Bit 4--TTY is a DD (Data Disc terminal)
Bits 18:35--same as always (line editor Y-position in LEYPOS format)
116. XGP underscore command (a clarification).
1. Left end is at the current column position.
2. Final column position is 1 column to the right of the last
underscore column. (I.e., final column←initial column+length
of underscore.)
117. The system (7.05) now agrees with the manual. XGPSER implements
177 1 52 n - set relative base line adjustment.
118. XGP changes.
1. MTAPE function 0, error code 15 means "Font Compiler core
image moved (or disappeared) while the XGP was running".
2. MTAPE function 4 now returns in ADR+3 the value of XGPRDY.
This cell is -1 if the XGP has OK status, 0 if XGP requires
manual intervention (7.05/D).
119. Clarification of the disk Record Offset feature, page 147.
The manual is correct in what it says about MTAPEs 20 and 21
taking or returning the number of the first logical record
(which is the number of hidden records plus one). Note
however that the offset is stored in the retrieval (and thus
returned by MTAPEs that read the retrieval) as the number of
hidden records. Also note that MTAPEs 10 and 11 only deal
with 4 special words of file info instead of five.
120. SETCRD UUO affects your lower iff the 400000,,0 bit is on.
(Changed from "any of 444000,,0 bits is on".)
121. The TTYMES and NULMES UUOs have been modified to type out the given
message on both the current PP (piece of paper) and PP number 0 if
all of the following conditions are true: 1) the destination
terminal is not your own specified by device 'TTY'; 2) the
destination terminal is a display whose current PP is not PP 0;
3) the destination terminal is not "holding" terminal output. If
conditions 1 and 2 are true but terminal output is being "held",
the message is output only on PP 0. If either of conditions 1 or 2
is not true, the message is output only on the terminal's current
PP. Thus the message is always output to PP 0 unless the
destination terminal is your own and is specified by device 'TTY'.
This means that if you receive a message while you are using E or
some other program that uses some PP other than PP 0, you can see
the message (as typed out on PP 0) by typing BREAK N (which selects
and redisplays PP 0).
122. New ELF MTAPE. Opcode 5 fakes power trap on 11. See UUO MANUAL, p. 201.
Op code = 5: PWRTRP
Simulates a power fail trap on the PDP-11. I.e., the 11 traps thru 24.
Note it does this 2 times, once on power down and once on power up.
123. The 11 interface (ELF) can interrupt the 10 thru the user interrupt system.
Bit 20 (0,,100000) (called INTELF) is the relevent bit to enable.
The device ELF must be yours for you to get this interrupt. The 11 requests
this interrupt by writing a 1 into the least significant bit of word
772566 on the unibus.
124. Users are warned that in DSK buffered mode the sequence:
ENTER
OUT
...
OUT
RENAME
CLOSE
will clobber parts of the file.
Do the RENAME after the CLOSE. Also in dump mode any outputs after
a RENAME will clobber parts of the file.
125. [This entry will be not be effective until system 8.00]
In a DSK RENAME, if any of 0,,700000 in ADR+1 or 777,,777777 in
ADR+2 is non-zero then the user-supplied data will replace
the corresponding fields in the file retrieval (didn't always
work before). If the user-supplied fields are all zero, then
the old retrieval information is kept (it is not the case that
the current time is supplied instead) (manual didn't specify
what happened).
126. [This entry will not be effective until system 8.00]
The bug described in 124 has been fixed.
127. The problem mentioned on page 145 paragraph 4 about writing an odd
number of words in dump mode has been fixed. It now works the
way you would expect. (Also on page 177, second paragraph.)
128. It should be noted on p. 215 of the UUO Manual that the address in
a JUMP instruction for the DD interface is always taken as absolute
(never relocated in a user program) and thus the JUMP instruction
should not be used in user DD programs. The JUMP instruction is
included for completeness and for system programmers.
129. DSK Dump mode output using the ACs as data is illegal. (Use of
ACs as dump mode command list is still OK.)
130. UPGIOT UUO for Datamedia (DM) displays.
[ME - The following specifications for DM display output are subject to
change as necessary during the next few weeks.]
The UPGIOT UUO can be used on Datamedia (DM) display terminals to run a DM
display program. For DM display programs, this UUO accepts several flags
in the left half of the first word of the header block, as explained
below. The DM display program itself consists of a sequence of 7-bit
bytes (an ASCII string), which bytes are by default interpreted as 7-bit
characters to display, except for the special 7-bit byte value of 177,
which causes the next character, if in the range of 000 to 040, to have
its normal control effect on the DM, instead of being interpreted as a
printable character. Normally, a character with octal value less than 40
(except for NULL (0), which is ignored, and TAB (11), LF (12), and CR
(15), which are not printing chars) is interpreted as a Stanford character
to display in its special DM representation, namely as the char which is
100 or 140 greater but blinking or bold.
A 177 char in the program causes the next character to have its normal DM
function if that char is greater than or equal to 175, or is less than or
equal to 040. The sequences 177 n, where 40<n<175 are reserved for future
escape meanings, and are currently no-ops. If the char after a 177 is a
FF (i.e., a 14, the cursor positioning DM command), then the next two
chars after the FF will be taken as the X-Y position for the cursor in
standard DM representation (see ** below). To actually output a 177 to
the DM, you must precede it with a quoting 177. The DM commands possible
using quoted control characters are explained later.
RESET and EXIT UUOs will flush any pending display program on a DM.
Here is the form of the UPGIOT UUO for DM display output.
UPGIOT HDR
HDR: <flags>,,PROG
<length of display program, in words>
<In-Progress flag>
PROG: <7-bit bytes>
Flag bits in the LH of the first word of the header are interpreted
as follows:
BIT OCTAL NAME MEANING
0 400000,,0 Overlapped mode. The UUO will return immediately
without waiting for the display program to
finish. However, it will wait for any previous
DM display programs to finish before returning
(unless the CHASTE bit is on--see below). While
the program is running, the <In-Progress flag>
will be non-zero. When the program finishes,
this flag will be cleared, unless the job does a
RESET or EXIT before the display program has
finished and cleared the flag.
1 200000,,0 Ignored (double-field mode for DD programs).
2 100000,,0 DMQUOT Quote all characters in the program, except 0's
and 177's. That is, control chars will never
be converted to blinking/bold
characters to represent chars 1:37 in the
Stanford char set. No conversion of Stanford to
Ascii will be done for the three characters that
are different in the two character sets. No
automatic erasing of new lines will be done.
Tabs will never be converted to spaces on output,
nor spaces to tabs.
3 40000,,0 TRUNCA Truncate each output line to 80 characters.
When the 80th column of a line is passed on the
DM display, following bytes will be ignored
until a CR, LF, or quoted (by 177 or DMQUOT)
F appears.
4 20000,,0 NOEEOL Suppress the erasing of each line that normally
occurs just before anything (including a CR or
LF) is output on the line.
5 10000,,0 NOEEOB Suppress the erasing of any line on which nothing
is output but CR or LF.
6 4000,,0 BETWEE Ignore spaces between tabs. When a tab is
encountered in the program, all following
spaces and nulls are ignored until another tab
or a character other than a tab, null, or space
is seen. If the terminating character is a
tab, then it also is ignored.
7 2000,,0 USERGO Don't let any other DM output occur while this
program is running. Normally, higher-priority
DM outputs (e.g., line editor and page printer
output) can interrupt a user program. Also, if
the output from the program falls off the
bottom of the screen, it will wrap around to
the top if and only if this bit is set;
otherwise text occurring after falling off the
bottom will be ignored until a command to
position the cursor back on the screen is seen.
8 1000,,0 CHASTE Don't wait for any previous DM display program
to finish. Instead, suppress the remainder of
such a previous display program.
Here are the effects of control characters transmitted to a DM display terminal.
To get these chars output from a display program, you must quote them either
with the DMQUOT flag explained above or with a preceding 177 character. The
characters TAB (11), LF (12), and CR (15) do not need to be quoted in a display
program in order to be transmitted to the display. (TAB does need to be quoted
if the system thinks the terminal either does not have tab stops or does not
have its tab stops set correctly; an unquoted tab in such a case will be
converted to the equivalent number of spaces.)
If the DM is in insert/delete (ID) mode, four of these control characters have
special effects; these are explained later. The remaining control characters
have generally undefined and in some cases weird effects in ID mode.
OCTAL CHAR ↑CHAR Effect
000 NULL ↑@ no-op.
001 ↓ ↑A no-op.
002 α ↑B home. Moves cursor to upper-left corner.
003 β ↑C no-op.
004 ∧ ↑D no-op.
005 ¬ ↑E no-op.
006 ε ↑F no-op.
007 π ↑G bell. Beeps the DM's audio tone.
010 λ ↑H back cursor. Moves left one char unless at left margin.
011 TAB ↑I tab. Moves to next tab stop. Normally need not be quoted.
012 LF ↑J linefeed. Moves down a line, or to top line from bottom.
013 VT ↑K tab clear. Clears any tab stop at current column.
014 FF ↑L set cursor position from next two chars. See ** below.
015 CR ↑M carriage return. Moves to left margin and down a line.
016 ∞ ↑N blink on. Subsequent chars will be blinking. See * below.
017 ∂ ↑O protected field on. Subsequent chars will be bold. See *.
020 ⊂ ↑P insert/delete on. Enters insert/delete mode. See ***.
021 ⊃ ↑Q transmit page to computer. This char never sent to DM.
022 ∩ ↑R transmit page to printer. This char never sent to DM.
023 ∪ ↑S transmit line to computer. This char never sent to DM.
024 ∀ ↑T no-op.
025 ∃ ↑U no-op.
026 ⊗ ↑V no-op.
027 ↔ ↑W erase from cursor to end of line.
030 _ ↑X cancel. Turns off blink, protected field, ID, & roll modes.
031 → ↑Y set tab. Sets a tab stop at current column.
032 ~ ↑Z up cursor. Move up a line unless on top line.
033 ≠ ↑[ no-op.
034 ≤ ↑\ forward cursor. Moves right a char, to next line from end.
035 ≥ ↑] roll on. Turns on roll mode. See **** below.
036 ≡ ↑↑ master clear. Clears screen, tabs, and all modes but roll.
037 ∨ ↑← erase screen. Clears unprotected text, all modes but roll.
* Stanford DM terminals will have a hardward modification installed to
interchange the effect of the blink-on and protected-field-on chars and to
disable the protectedness of chars sent with protected-field mode on. Thus,
with this mod, blink-on will cause subsequent chars to appear as bold, and
protected-field-on will cause subsequent chars to appear as blinking and not be
protected. Furthermore, blinking protected-field chars that are moved by ID
operations will stop blinking.
** The FF character is used to move the cursor to an arbitrary X-Y position on
the screen. The position is determined by the next two chars sent after the FF.
The first of these two chars sets the X-position and the second the Y-position.
The actual X- or Y-position set by a character is determined from the octal
value of the character XORed with 140 (octal) and counting lines from 0 to 23
(decimal) and columns from 0 to 79 (decimal). X- and Y-position characters that
are out of range of the screen will select a position of 0. If the X- or
Y-position character is one of the chars home (↑B), FF (↑L), transmit page (↑Q
or ↑R), cancel (↑X), master clear (↑↑), or erase screen (↑←), then the cursor
positioning command is aborted and the aborting command is executed instead.
*** In Insert/Delete (ID) mode, the following four control characters have
these special effects rather than those listed above. Other control chars have
undefined effects in ID mode.
OCTAL CHAR ↑CHAR EFFECT IN ID MODE (none of these moves the cursor)
010 λ ↑H delete char. Chars to the right shift left one space.
012 LF ↑J add row. A blank line is inserted, lines below move down.
032 ~ ↑Z delete row. Lines below move up one line.
034 ≤ ↑\ add char. Space is inserted, chars to the right move right.
**** In roll mode, a CR or LF sent while on the last line of the display will
cause the insertion of a blank line at the bottom of the screen to force the
whole screen text to scroll up one line. The cursor is left at the bottom
instead of moving to the top line as it would if roll mode were off. Note
that roll mode can only be cleared by the cancel character, ↑X.
For more details, consult the Datamedia manuals or ME.
131. SUPERS bit (0,,100) in fourth word of SETACT table suppresses
erasure of the DD or DM line editor upon activation while
positioned to specific screen location with LEYPOS UUO.
132. KILTTY bit (40000,,0) in TTYTAB means TTYSER has called TTYKIL
for this line and is through with the DDB, which will be released
by DPYKIL when (and if) the dpy header is released.
133. RUN UUO takes core size argument in words, not in K as documented.
134. New CURSOR UUO [PPIOT 10,] specifies place to leave DM cursor when
output isn't going on provided but only when the line editor is empty.
CURSOR [X,,Y]
If [X,,Y] is negative, then the cursor is always positioned wherever
the line editor cursor should be. If X and/or Y specifies a position
that is off screen, no cursor will be displayed. Values of X and Y
should be 0 for the left margin and top line respectively, and N-1
for the Nth column and Nth line respectively.
The effect of the CURSOR UUO is undone by RESET, DPYCLR, and ESC or BRK N.
135. Absolute location 331 now contains LDSHF*1000+LDPWR,,LDAVG.
136. Page 181 change MTAPE ADR to MTAPE <channel number>,ADR
137. The XGP and DAC devices are now interlocked. Only one of them
may be INITed at a time. If you try to INIT the XGP, for example,
while the DAC is in use, it will give an error message or the error
return if the 400 bit is on in the mode, or wait automatically if the
1000 bit is on.
138. (add to item 122) ELF MTAPE for powerfail clears GRAB mode.
139. Delete all references to the Librascope and to fast band service.
Low core pointers for FBBANDLIST and FBACT are now zero and reserved
for future use.
140. The descriptions of INTPTI and INTPTO in Section 9 are interchanged.
Bit 5 (10000,,0) is INTPTI but should say "A PTY you own has just
gone into a wait state waiting for some input from you (e.g., by
PTWR1W); it may be waiting for either a character or a line." Bit 8
(1000,,0) is INTPTO but should say "A PTY you own has just output a
character for you to read (e.g., with PTRD1W)."
141. The new RDLINE UUO reads a line from a TTY, returning a 9-bit string
ended with a null. The calling sequence is:
MOVE AC,[BBCCCC,,ADDR] ;ADDR IS ADDRESS FOR RETURNED 9-BIT STRING
RDLINE AC,
where BB (two octal digits) is the initial byte position (to be
IDPBed) for returning characters, and CCCC (four octal digits) is
the maximum number of characters (including the ending null) to be
returned by this UUO. If CCCC=0, then the default maximum is used,
namely 160 (decimal) characters (including the ending null) (50
octal words). The byte pointer to the ending null byte is returned
in the AC. This UUO reads characters until either the maximum count
is used up or a whole "line" has been read. A "line" is defined as
follows: If the terminal is a display with the EMODE bit turned on
(see item 74 in this file), then a line is any number of characters
terminated by a 400 (the marking character in EMODE); otherwise, a
line is any number of characters terminated by an activation
character (which is defined in the usual manner, e.g., as in INCHWL).
Note that if the AC of this UUO contains just 0,,ADDR upon call,
then the characters will be returned starting in the high-order byte
of address ADDR+1, since the byte position (00 in this case) is
incremented with the first deposit.
142. Section 9.1, Page 118, first paragraph, third line from end should
say "If your job is not in one of the queues..." instead of "...or
the queues...".
143. All references to PDP-6 should be changed to P2 and KA10 to P1, etc.
144. The LOCK UUO no longer returns anything in the accumulator.
145. Accumulator 2 no longer contains the job's protection-relocation
when a SPACEWAR module is started up.
146. The maximum size of a transfer from the TV camera (INPUT UUO for
device TV) is 18 pages (thats 9*1024 words).
147. More TTYSET UUO functions implemented. See page 13, entry 114.
148. Programs that run the disk in buffered mode should consider using
a larger number of buffers. The system default is two (too low)
whereas, the maximum useful number is 19. 19 permits an entire disk
track to be read and copied into the user's buffers, whereas with two
buffers, the system must read the track 9 times. The number 19 is
derived from the format of files on the disk and will change if the
disk format changes.
149. The FREEZE UUO allows user programs to determine exactly what
characters are transmitted to a Datamedia (DM). This UUO uses the AC
field as an immediate argument. If the AC field is 1 (FREEZE 1,),
then non-UPGIOT output is frozen and will not take place. If the AC
field is 0 (FREEZE 0,), then non-UPGIOT output is unfrozen and can
continue. However, any time the state of frozenness is changed, all
queued output is flushed instantly. While the DM is in the frozen
state, transfers queued by UPGIOT will still be allowed to go
through, but if the DMQUOT bit is on for such a UPGIOT transfer, the
display program text will be sent EXACTLY as given to the system,
with no padding characters ever inserted and no interpretation of
such things as control characters, long line wraparound, etc. If the
DMQUOT bit is off for a frozen UPGIOT transfer, normal text
interpretation occurs. RESET, DPYCLR, and ESC C all restore the DM
to the unfrozen state.
150. The UUOs INCHRW, INCHRS, INSKIP, SNEAKW, and SNEAKS can now access
the first character of the line editor, even if the line editor
cursor is at the left margin.
151. Two new bits have been added in the right half of the fourth word of
the special activation table (set by SETACT UUO). These bits, which
effect activation of the line editor, are:
SUPACT (0,,200)
This bit suppresses CONTROL and META bits on all characters except
line editor commands. In this mode, anything typed with CONTROL or
META is inserted into the line, never overtyping something already
there, but the bucky bits are then discarded. When you are typing to
the monitor, you are effectively always in this mode.
SUPEOL (0,,400)
This bit suppresses activation by the following commands at the end
of the line editor: CONTROL-TAB, CONTROL-R, CONTROL-S, CONTROL-K, and
META-<plain non-activating char>. Among these, the CONTROL commands
are carried out as line editor commands, including the taking of a
following character argument by CONTROL-S and CONTROL-K; however,
these commands are all no-ops at the end of the line (except for
storing the repeat search/kill argument). META-<plain non-activating
char> at the end of the line is treated as though the META had not
been typed. However, ALLACT mode (0,,40 in the same group of mode
bits of SETACT table) takes precedence over this mode--anything
required to activate by ALLACT, including META at the end of a
not-reedited line, will activate dispite this bit being set. Note
that CONTROL-D and CONTROL-I still activate at the end of the line in
SUPEOL mode.
152. New UUO .SYML for looking up system symbols. CALLI 400010 (used to be
UFBGET)
CALL: MOVEI AC,ADR
.SYML AC,
ERROR RETURN
SUCCESS RETURN
ADR: RADIX50 0,SYMBOL
ADR+1: RADIX50 0,BLOCKNAME OR 0
The UUO will search the system's symbol table for tge given symbol.
If it is found in the specified block, the symbol's value is returned,
regardless of the existence of the symbol in any other blocks. If the
blockname is 0, then there must be exactly one occurence of the symbol
in the table.
On a successful return the symbol value will be in AC.
On a failure return, AC will contain a failure reason:
0 system symbols not in core of not sorted
1 symbol not found in any block
2 symbol not found in specified block, but is in some other block
3 symbol multiply defined (blockname was 0)
153. The left kern parameter in fonts is now interpreted as a 9 bit twos
complement quantity by XGPSER, allowing for right kerning. (hpm)
154. The SHOWIT UUO causes your job's wholine to include a display of
the status of a disk (DSK or UDP) file on the right half of the 3rd
line of the screen. SHOWIT is CALLI 400011 (formerly UFBGIV UUO).
The left half of the 3rd line is never touched by the wholine. The
form of the filestatus display is the same as that typed out by the
FILES commands except that the job number is omitted since it always
matches that in the user line of the wholine. The form is
FILENM EXT PRJPRG length usetp FLAGS
where "length" is the file's length in records, "usetp" is the
current value of the USET pointer for the file, and, in the FLAGS, U
means the file is on a UDP, R means the file is being Read, RA means
the file is open in Read-Alter mode, W means the file is being
Written, and E means the End of file has been reached.
Call: MOVEI AC,BITS+CHANNEL NUMBER
SHOWIT AC,
where BITS includes any of the following:
0,,400000 ;Suppress the erasure of the filestatus display
;that normally happens when the I/O channel being
;displayed is released. Useful if your program
;normally displays something else on that line.
;This bit is irrelevant if the display is a III.
0,,200000 ;Don't display any filestatus on the wholine.
;This turns off any previous filestatus display
;(whether turned on by UUO or keyboard command).
155. Bit 17 of word 2 of the block returned by PPSPY/PPINFO will be on
if the display is a DM with a FREEZE in effect.
156. The ESCAPE I interrupt returns as a datum the argument given to the
escape command, in sign magnitude format (sign on for BREAK, off
for ESCAPE).
157. The LEYPOS and DPYPOS UUOs, which take arguments specifying the
screen position of the line editor and page printer, respectively,
normally take arguments from -1000 (bottom of screen) to 1000 (top
of screen), with other values being off screen. On DMs, however,
-1000 is at the 24th line but negative values with magnitude
greater than 1000, for instance -1200, may not represent off-screen
positions if the DM is a simulated DM with more than 24 lines. On
the other hand, positive values with magnitude greater than 1000,
for instance 1200, will always be off-screen. Also, note that only
the low-order 9 bits of the position argument are examined, with
this 9-bit value being taken as a 2's-complement number. Thus the
2000 bit is the sign bit, and the possible range of values for the
position is from -2000 to 1777 (octal).
158. The SUPCT bit (0,,40000) in the fourth word of a special activation
table used with the SETACT UUO disables the (new) line editor
commands αT, αL, and αB. With the SUPCT bit set, any of αT, αL,
and αB typed will be processed as normal typein to the user
program.
159. The problem mentioned in item 128 about absolute Data Disk jump addresses
has been fixed. The Data Disk now transfers using user-relative
addresses thanks to the Mappiplexor.
160. The maximum transfer size for the ADC or DAC is 32K.
161. Two new MTAPEs have been added for device DISK and UDP in either new or
old mode.
MTAPE TO READ THE DISK IN DUMP MODE INTO P3 MEMORY
CALL: MTAPE CHN,[ 'GODMOD'
24
IOWD FOR TRANSFER RELATIVE TO BEGINNING OF P3 MEMORY
ADDRESS OF USER MODE PLACE TO STORE ECC INFO
(THIS AREA MUST BE WRITABLE AND AT LEAST 38. WORDS LONG)
ECC STATUS WORD 1 IS STORED HERE
ECC STATUS WORD 2 IS STORED HERE
DISK ADDRESS FOR OLD MODE TRANSFER
]
THE ECC INFO IS TWO WORDS PER ENTRY IN THE FOLLOWING FORMAT:
BYTE (12) BYTEC (24) BITS ↔ P3 AOBJN POINTER TO RECORD
WHERE BYTEC IS THE BYTE COUNT FROM THE BEGINNING OF THE RECORD AND BITS
ARE THE 3 BITS FIELD TO BE XORED WITH THE DATA.
ECC STATUS WORD 1 HAS THE FOLLOWING FORMAT:
-N,,USER ADDRESS OF NEXT LOCATION TO STORE ECC INFO AT (N MAY BE ZERO)
IF THE LEFT HALF IS 1 THEN SOME ECC INFO IS LOST. IF SO, THE ECC STATUS
WORD 2 IS THE FIRST P3 ADDRESS OF THE FIRST RECORD WHOSE ECC INFO WAS LOST.
MTAPE TO WRITE THE DISK IN DUMP MODE FROM P3 MEMORY
CALL: MTAPE CHN,[ 'GODMOD'
25
IOWD FOR TRANSFER RELATIVE TO BEGINNING OF P3 MEMORY
DISK ADDRESS FOR OLD MODE TRANSFER
]
162. PTRDS UUO returns immediately with only a null in the returned string
if the PTY is not a display and is holding output.
163. Lowcore location 252 is now a pointer to the cell DQCNT which contains
the number of disk operations waiting to be started.
164. The PHUBIT bit (PHysical Uset BIT--0,,100) in the I/O status word for
device DSK or new-style UDP now causes the disk file's record offset
to be ignored by all UUOs except those that explicitly set or return
the record offset. With PHUBIT on, the UUOs USETI, USETO, UGETF, and
MTAPE (functions 0 and 16) take and/or return physical record numbers
instead of logical record numbers, and the UUOs LOOKUP and ENTER
return the physical size of the file rather than the logical size. In
other words, with PHUBIT ON record numbers are taken as PHYSICAL
(record offset ignored), and with PHUBIT OFF record numbers are taken
as LOGICAL (thus allowing some records at the beginning of the file to
have negative record numbers). MTAPE functions 20 and 21 (read and
set record offset) are not affected by this bit.
165. New ATTSEG error code (p86):
5 - Lower segment is too big (bigger than 128K)
166. Note that RENAME UUO does not do a CLOSE. The renamed file will
still be open after the RENAME.
167. New privilege bit LIVBIT (200000), can be enabled or disabled
by anyone (by the monitor commands ENABLE LIV and DISABLE LIV)
and prevents autologout.
168. Lowcore pointer update:
216 CORMAX maximum size of a user job in words
223 CHKBEG first checksummed location in the system
255 CORPTR This is address of a block of words describing
the state of the swapper. The first 4 words are
0, FINISH, FORCE, and FIT.
257 unused
261 unused
263 unused
265 SYSTOP This is the address of a word that contains the physical
address of the first word after the system (where free
storage begins).
266 CORTAB This is the address of a table that indicates the usage
of each page of core. The entries in this table are
9-bit bytes (0,,777000 bits). The entry for a given
page contains either 1)the number of the job occupying
the page, 2)a 101 if the page is part of the system,
3)a 103 if the page is non-existant, 4)a 105 if the
page is part of free storage, 5)a 110 if the page is a
page map, or 6)a 0 if the page is unused.
301 unused
325 MTRLST This is the address of the first word of a linked list
of meter control blocks used by the system when the
performance meter is in "background" mode.
326 SKIPP1 An I/O instruction to execute which will skip if it is
executed on processor 1 (P1).
327 SKIPP2 An I/O instruction to execute which will skip if it is
executed on processor 2 (P2).
330 LEBUF Offset within the DPY header for the line editor buffer
332 DDQSIZ This is the address of a word containing the size of the
queue of terminals waiting for data disk channels.
169. JBTSTS modifications.
WIPEJD (0,,200000) flushed
SHF (4000,,0) flushed
LOKSWP (4000,,0) swap job into locked core.
FBINP (0,,10000) flushed
FBEPR (0,,4000) flushed
FBJWT (0,,2000) flushed
170. All references to PDP-10 and PDP-6 should be fixed to use P1, P2 and P3.
171. ADC/DAC service has been flushed.
172. The following devices have been added. They are all on the PDP-6 (P3)
ADC,DAC,KIM,SAM,RTJ,FRM,SIX
All but SIX are dummy devices used for interlocking. SIX is a sharable
device [KS: insert description of UUOs here.]
SYSTEM CALLS FOR THE SIX (copied from SYS.PUB[SIX,MUS] on 17-Sep-77)
There are basically two different things you can do to the SIX through
the KL: send messages and do disk transfers. Each of these things has its
own formats and UUOs. Here is how it all works:
DEVICE SIX
There is a device that you can OPEN on the KL (in mode '17 only!) called
SIX. Many different people can have it open at once, but it only makes
sense for each person (job) to have it opened once. You do an OUTPUT
to it to send a message to the 6 and you do an INPUT to receive a message
from the 6. In addition, there is a call (an MTAPE) to find out if there
is a message waiting for you to read it, and an interrupt bit you can
set to receive a user-interrupt each time a new message comes in.
The interrupt bit is called INTSIX and is the 40000 bit (bit 21) in the
right half of the interrupt word. See the chapter on the user interrupt
system in the UUO manual for how to use this bit.
When you CLOSE or RELEASE the device SIX, the system sends out an MCLRJOB
message automatically. This will clear everything the SIX knows about you,
will release any buffers you have claimed, will stop the real-time job if
you have initialized it, etc etc etc.
The exact monitor calls are as follows:
OUTPUT CHN,ADDR
ADDR: IOWD WD,MA
This is the standard system OUTPUT UUO. It takes a single IOWD, not an IO command
list. This IOWD points to a single message. The first word (or the first
two words if it is a multiple-word message) must be in the message
header format described before. The system will deposit the sequence number
it assigns your message into the second word of the message (if any). The
message will be sent out (essentially) immediately. The maximum message
length is 1024 words. Anything longer than this must be broken up into 1K
pieces.
INPUT CHN,ADDR
ADDR: IOWD WD,MA
This is the standard system INPUT UUO. Likewise, it takes a single IOWD, not
an IO command list. This IOWD points to a place where a single message will
be placed by the system. If there are no messages there for you, this UUO
will wait until one comes in (or forever if no messages come in). You will
only get messages that are specifically directed to your job. Generally this
will not happen unless you do something (send a message to the 6) to make
it send you messages. If the IOWD you give is not big enough to hold the
message, you will only get as much of it as will fit.
MTAPE CHN,ADDR
<Failure return> ; Meaning of this return depends on function
<Success return>
ADDR: <Function code>
<Some data may be returned here>
There are only two legal codes right now. Code=0 means "skip if anything
in input list for me". It returns you in ADDR+1 the length (total length,
including header) of the next message in your input queue. It skips if
there is anything in your input list and it does not skip if your input
list is empty (that is, if your next INPUT UUO would have to wait).
Code=1 means wait for something to come into your input list, then return
its length in ADDR+1. It never skips.
DISK TRANSFERS
Disk transfers to the 6 memory operate much the way that normal
disk transfers do, except that they take special monitor calls, and
that the error correction is not done for you. The ECC (error correction
code) bytes are returned to you and you have to send them to the 6 using
the MECC message.
The disk must be open in mode 17 (dump mode). You will get an illegal UUO
from the following MTAPEs if it is not open in mode 17.
MTAPE CHN,ADDR
ADDR: SIXBIT /GODMOD/
24 ; Code for read, 25 for write
IOWD WC,MA ; Memory address relative to 6 memory
ECCADR ; Address (in your core image) where ECC data goes
ECCWD1
ECCWD2 ; ECC status words
BLOCK,,TRACK ; Only relevant on old format UDPs
This is how you read data from the disk into the 6 memory. You give an IOWD,
just like any other disk transfer (only dump mode, mode '17 is legal), only
the memory address you give in this IOWD refers to an absolute location in
the 6 memory, of which there is roughly 64K. The ECC data itself is two
words per entry. There may be up to 19 entries, so that your table of
the ECC data (which starts at location ECCADR) must be at least 38 words long.
Of these two words of data for each error, they are decoded as follows:
WORD 1 BYTE (12) BYTEC (24) BITS
BITS PATTERN NAME INTERPRETATION
---------------------------------------------------------------------------
0:11 777700,,0 BYTEC Byte number within ailing record of bad byte
12:35 77,,777777 BITS 3 ECC bytes to be XORed with the data
WORD 2 -WC,,P3ADDR
The first word gives the byte number within the ailing block of the first
bad byte, and the 3 ECC bytes to be XORed in with the data to make the
correction. The next word gives in the right half the absolute address
in the 6 memory of the first word (byte) of the ailing record. Thus you take
this word and start XORing bytes at BYTEC bytes into this record. The only
pecularity is the way the channel packs bytes to a word (THIS IS GOING
TO CHANGE!!!). The channel packs 9 bytes into 2 PDP-6 words in the following
manner:
***************************************************************
* * * * * *
* BYTE 0 * BYTE 1 * BYTE 2 * BYTE 3 * BYTE 4A *
* * * * * *
***************************************************************
***************************************************************
* * * * * *
* BYTE 5 * BYTE 6 * BYTE 7 * BYTE 8 * BYTE 4B *
* * * * * *
***************************************************************
BITS PATTERN NAME INTERPRETATION
---------------------------------------------------------------------------
***WORD 1***
0:7 776000,,0 BYTE0 Entire byte 0
8:15 1774,,0 BYTE1 Entire byte 1
16:23 3,,770000 BYTE2 Entire byte 2
24:31 7760 BYTE3 Entire byte 3
32:35 17 BYTE4a High-order bits of byte 4
***WORD 2***
0:7 776000,,0 BYTE5 Entire byte 5
8:15 1774,,0 BYTE6 Entire byte 6
16:23 3,,770000 BYTE7 Entire byte 7
24:31 7760 BYTE8 Entire byte 8
32:35 17 BYTE4b Low-order bits of byte 4
Thusly, the high-order 4 bits of byte 4 go into the tail of the first word,
and the low-order 4 bits of byte four go into the tail of the second word.
So, if you decide you have to do this error correction yourself,
you have to decide first which word pair it is in, then figure out
what byte within the word pair it is, and start XORing. Luckily, the
6 subsystem will do this for you if you just send the MECC message.
ECCWD1 is set to various things describing the state of the transfer. If
the left half is zero, then no errors occurred. If there were
less than 19 errors, then the transfer is complete. In this case, the
ECCWD1 will be -N,,ADRS where ADRS is the first unused location in the
error correction data table (ECCADR) and -N is the number of words in
this 38 word table that are remaining. If the Left half of ECCWD1 is exactly
1, then the transfer is complete: there were more than 19 errors over
the transfer, and some ECC information was lost. You got corrections for
the first 19 errors, but then ECCWD2 will be the first absolute address in the 6
memory of the first record whose ECC information was lost. This ECC information
should be shipped out and the remainder of the transfer should be retried.
To retry, you will have to know how the addresses map into blocks and records.
For the regular disk and the new-style UDPs, it is very simple. There are
128 words to each record. For old-format UDPs, it is a little more complicated,
because you must give the disk address in terms of the track number and the
record number within that track (see the UUO manual). In old-format UDPs, there
are 19 records per track. The first record is 32 words long and every succeeding
record is 128 words long. Thus the length of the entire track is 32+18*128.
MTAPE CHN,ADDR
ADDR: SIXBIT /GODMOD/
25 ; Code for write
IOWD WC,MA ; Memory address relative to 6 memory
BLOCK,,TRACK ; Only relevant on old format UDPs
Since there can be no errors on output (according to the disk manual), there
is no need for ECC. Thusly, it is much simpler to write from the 6 memory.
Things should be pretty self-explanatory by this point.
173.
.FSLIMIT:
The LOCK UUO implementation has been changed. The organization of core
is as follows: SYSTEM, FREE STORAGE, USERS. It does not matter where
the 256K word boundary is, as long as it is after the end of free storage.
The end of the system is marked by SYSTOP and the end of free storage
is marked by FSTOP (SYSPAG and FSPAG are page rather than word versions
of the same values). User core is everything after FSTOP. If free storage
needs to expand, then the user at FSTOP is swapped out. If a job were
locked in core at FSTOP he might get swapped out. To get around this,
user core is divided into two regions, high and low, which are exactly
the same, except that locked jobs are only in the high region. The
dividing line between the high and low regions is called FSLIMIT and
is set big enough so that free storage will never get that big. The
process of locking a job in core involves first checking to see if
it is entirely in the high region. If it is, the JLOCK bit is set in
JBTSTS and the job is considered locked. If not, then the job is swapped
out and the LOKSWP bit is set instead. This bit indicates to the swapper
that the job must be swapped into the high region. The job will be
swapped in when there is enough high region core available for it and
then the LOKSWP bit will be turned off and the JLOCK bit turned on.
174. If the 1000 bit (RAQBIT) is set in the device status word for the disk,
then when an ENTER is done to go into read-alter mode, the dates and
times from the ENTER block will be ignored and the current date will
NOT be written in the file for the last written and last referenced fields.
In fact, the file will not be changed (written) at ENTER time at all.
Programs that enter huge files in read-alter mode should set this bit to
save time and disk ops.
175. More TTYSET functions have been added. See UUO.ME[S,DOC].
176. BEEP and ADSMAP UUOs affect the "responsible TTY".
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
177. TTYSET function 17 (get responsible TTY) returns -1 if no TTY
is responsible. Also, if you look in the system (eg, via PEEK
or SETPR2) to find the terminal responsible for some TTY line,
a value of 12 (TTY12) for the responsible terminal really means
that no one is responsible for the particular TTY line.
178. [Obsolete. See item 201.]
A beep to a (responsible) non-ARPA PTY is a no-op.
179. Somehow this didn't make it into the third edition:
The SUPSOM bit (0,,1000) in the fourth word of a SETACT UUO
activation table suppresses the CONTROL and META bits on all
characters whose individual character bits are not on in the
activation table. This means that the activation table's
character bits are used for two purposes--in special activation
mode and in SUPSOM mode--but these two modes are not expected
to be in use at the same time. If SUPEOL is on, it takes
precedence over SUPSOM.
180. Error code 7 (GMM) to an IMP MTAPE means Gender MisMatch; ie, an
attempt to connect two like-gendered sockets together. Odd sockets
may only be connected to even sockets and vice versa.
181. XGP intercharacter spacing ('177 '1 '50 ICS) is now implemented.
It takes one 7-bit byte as the new value for intercharacter
spacing. The intercharacter spacing is set to zero when you INIT
the XGP, but is not reset to zero at any other time. The
intercharacter spacing value is the (positive) number of columns by
which the X-position is incremented after each normal text
character is printed (after the X-adjustment for character width).
It is possible that use of this feature may generate lines that are
too complex for XGPSER to print (usual warning).
182. The system now allows up to =128 fonts (font numbers from 0 to =127).
183. XGP MTAPE 7 is just like XGP MTAPE 1 (compiles a font) except that
a four-word table follows the font identification number to specify
which characters are to be loaded (compiled). In this four-word
table, each word contains the flag bits for =32 characters: the
first word contains the bits for characters '000 thru '037, the
next word for '040 thru '077, then '100 thru '137, and finally '140
thru '177. Within a given word, the flag bits occur from right to
left in order of increasing character code, with the high-order
four bits of each word ignored (those four bits should be zero).
Thus bit 35 (0,,1) of the first word is the flag bit for character
'000, bit 34 (0,,2) is the bit for '001, etc. If the flag bit for
a character is on, that character will be loaded when the given
font is compiled; otherwise the character will not be loaded and
any attempt to print that character in that font will be ignored.
This MTAPE accepts only the uncompiled (.FNT) font format. If the
given file holds a compiled-format (.CFT) font, then an error will
occur (illegal format file). If no filename extension is given and
no file has the given exact name, then only the additional
extension .FNT will be looked for -- no .CFT file will be used.
184. XGPUUO opcode 4 from the system to the Font Compiler is just like
opcode 2 except that words 5 through 10 (octal) of the data block
contain the four words from the user specifying which characters
are to be compiled, in the same format as in XGP MTAPE 7.
185. XGP ESCAPE 5 selects the font specified by the following 7-bit byte
(e.g., '177 '5 FONT).
186. The HNGTRP bit (bit 28--0,,200) in XGP I/O status word suppresses
halt with error message on hung XGP (and probably hung P2). UUOs
take error return instead when this bit is on (just like LPT).
187. The following new TTYSETs are defined:
23 get GAG bit
24 set GAG bit
25 get NO-CONVERT bit
26 set NO-CONVERT bit
These bits correspond to the commands TTY [NO] GAG and TTY [NO] CONVERT
except that TTY CONVERT clears the no-convert bit. The GAG bit prevents
anyone from linking to the terminal via the TALK command, and also
prevents TTYMES to the terminal (except TTYMES to SIXBIT /TTY/ from the
attached job). GAG does not prevent beeps. The no-convert bit
applies only to physical terminals (not PTYs) which are not displays;
when the bit is off (the default), the characters altmode, right brace,
tilde, and not-equal are converted on input and output as they are for
ARPAnet PTYs. This means also that when the bit is off, only octal 33
is interpreted as altmode on input. If you have an old model 33 you
may need to say TTY NO CONVERT or set this bit. TTYSETs 23 and 25
return the value 0 or 1 (all but bit 35 returned zero). 24 and 26
use bit 35 of the TTYSET command word to set the bit.
188. TTY image modes 10 and 11. These modes permit input and output of
all characters including null and ↑C, with no conversion, filling,
etc. If either of these modes is set in TTY IOS either by INIT or
by TTYSET (or SETSTS), then filling and code conversion are disabled
for any form of I/O, TTYUUO as well as buffered INPUT or OUTPUT. In
addition, beeps to the terminal are disabled. Further effects for
output: OUTCHR accepts 8-bit characters and does not generate
parity. (OUTSTR and other inherently 7-bit output methods still
generate parity.) For the OUT and OUTPUT UUOs, parity is not
generated, and nulls will be output, if and only if the byte size
of the byte pointer in the users buffer header is 9 or more. (The
user must set this after INITing the channel.) The number of
characters typed will be exactly the number deposited into the
buffer by the user, so padding nulls in the last word in use in the
buffer will not be sent. Further effects for input: The eighth
(parity) bit is made available to the user, and nulls are allowed.
The 400 bit will be on in all characters input, to allow nulls.
(A zero character is not allowed internally in the monitor.) This
bit may be ignored, except that it distinguishes a typed null from
a padding null in buffered input. (The user's buffer header must
specify a byte size of at least 9, of course, to see that bit.)
INCHRW and INCHRS will return 9-bit characters. The line-at-a-time
TTYUUOs (and RDLINE) should not be used while the TTY is in image
mode, since line activators are not well-defined. Modes 10 and 11
are exactly the same on output; the difference on input has to do
with when the program is awakened on an IN or INPUT UUO: in mode
10, the UUO will return when any number of characters (greater than
zero) are waiting; in mode 11, the program is not awakened until
the TTY input buffer is half full. The TTYSKP UUO can be used to
find out if an INPUT will return immediately. Modes 10 and 11 are
undefined for local (DD and III) display terminals; in particular,
they are not a good way to try to trap CALLs. However, they do work
on Datamedias; while a DM is in image mode, the DM output queues are
disabled, and output will come only from the TTY output buffer.
Also, the line editor is disabled for input, as are escape commands.
(NUL is passed to programs in this mode.)
189. The LOGIN UUO is legal only if JACCT is set, not whenever JLOG is off.
190. New UFD format:
words 0-3: same as before
4: file length in words
5: BYTE (15)date written in system date format (21)time written
in 15ths of a second after midnight *
6: last referenced date **
7: last dumped date **
10-11: not used (yet)
12: SATID (may be changed)
13-16: 4 words of special file info (as in disk MTAPEs 10 and 11)
17: file offset (1 less than first logical record # in the file)
* The low order bit of this word is 0 for PST and 1 for PDT.
This date is always in Pacific Standard Time.
** These two words have the same format as they do in long LOOKUP blocks.
This format does not apply to the MFD.
191. New disk MTAPE 26:
MTAPE CHN,[ 'GODMOD'
26
'filename'
'extension',,ERROR CODE
UNUSED (must be zero)
'ppn'
ADDRESS OF 20 WORD BLOCK FOR UFD ENTRY TO BE STORED IN
]
ERROR RETURN
SUCCESS RETURN
Does a LOOKUP using the given information, but instead of storing what's
normally put in a lookup block, it stores the 20 word ufd entry starting
at the address specified in the MTAPE block. If the file being looked up
is a UFD, the system generates a "ufd" entry and stores that rather than
the actual entry from the MFD.
192. Include NEWPRV.JBR[S,DOC].
193. TTYSET 27 and TTYSET 30 are get and set, respectively, for the
"no-peek" bit. This bit is totally unused by the monitor, but is
set by LOGIN and other programs that read passwords during the
time a password is in the TTY input buffer. The PK program reads
this bit and doesn't display the TTY's input buffer when it's on.
194. New disk MTAPE 27:
MTAPE CHN,[ SIXBIT /GODMOD/
27
UFD'S PROTECTION WORD STORED HERE
UFD'S FILE INFO WORD 3 STORED HERE (DEFAULT PRO/GRP ACCESS)
]
ERROR RETURN, NO LOOKUP DONE
SUCCESS RETURN
If a LOOKUP has been done on CHN, then the MTAPE returns the protection word
and the default protection/group access word of the UFD of the file looked up.
If the file itself is a UFD then the "UFD" protection word is that of the MFD
but the "UFD" default protection/group access word is that of the UFD (i.e.,
the file looked up) itself.
195. Update page 164 describing the 4 words of special info stored for a UFD on
the disk:
word 3: bits 10:35 are the group access bits for the UFD.
196. "JOBNM1" at top of on p. 253 (Job Data Area) should be "JOBTM1".
197. New low core pointer, location 261 points to the cell DAYLIT which
is non-zero for daylight savings time.
198. ENTER no longer lets you set the creation date of a file. It is set
to the current date when the ENTER creates the file, and is copied
from the old version when the ENTER supercedes a file.
199. New UUO: STDTIM AC, (CALLI 400055) is like ACCTIM but returns Pacific
Standard Time.
200. New XGP MTAPEs.
MTAPE <chan>,ADR
ADR: 10
<number of scan lines output is returned here>
MTAPE 10 returns the number of scan lines queued for output to the
XGP since you inited the XGP.
MTAPE <chan>,ADR
ADR: 11
<number of real formfeeds already output is returned here>
MTAPE 11 returns the number of formfeeds (014's) that you have output
that have already been sent to the XGP (not just queued -- however,
the actual paper cut occurs about 25 seconds after the formfeed
itself has been sent).
201. PTYs are initialized with the GAG bit on. The GAG bit is checked
when the monitor decides whether or not to permit a TTYMES or BEEP
to a PTY. IMPBIT is no longer checked in this regard. When a BEEP
to a PTY is GAGged, the BEEP is given instead to the job owning the
PTY. BEEPs are never GAGged on non-PTYs.
202. The GETPPN UUO, when given by a job with JACCT set, ignores jobs
which don't have JLOG set in deciding whether or not to take the
skip return.
203. When a spacewar module is started, AC 7 contains the protection of
the upper segment.
204. The SWAP UUO, when starting a new job, will set the alias of the
new job equal to that of the old job iff the PPN specified for the
new job (word 5 of the argument block) is zero. (Otherwise the
new job is started with no alias, as before.)
205. Typo on p. 84. Sample UUO call "SHOWIT AC" should be "SHOWIT AC,".
206. XGP appendix should explain difference between mode 0 and mode 13.
(Which I think is that in mode 13 the byte size is 36.)
207. TTYSET function 31 clears the line editor if the terminal is a display.
208. XGP ESCAPE 6 is "select font and align at top". '177 '6 <font number>.
A relative baseline adjust is done to make the newly selected font
line up at the top with the top of the previously selected font,
unless no chars have been output on the current text line, in which
case XGP ESCAPE 6 is the same as XGP ESCAPE 5 (font select).
209. Any file LOOKUP error from a SWAP UUO trying to start up a new job
stops the new job, not the old one.
210. The INTIMS interrupt is given to the logger when an "interesting" RFC
(ie, 1≤socket≤777 and socket is odd) comes in. No network channels
need be opened (in fact, the logger doesn't have any channels open).
A job becomes the logger by setting the "LOGGER" cell in the system.
211. The LGONCE bit (4000,,0) in the IMPSTB word says that the logger has
already looked at this socket. The system doesn't use this bit, but
the user mode logger sets and uses it to avoid trying to service the
same RFC twice.
212. Following a conversation with Postel, interesting sockets now stop at
377 instead of 777; sockets 400 and up are "private sockets".
213. Sockets may be gensymmed by using -1 in the connect MTAPE block instead
of a socket number. A gensymmed socket is picked such that the next 5
sockets are free.
214. Spacewar process timeout causes the job to get SPACEWAR LOSSAGE and to
to be stopped.
215. Note that since the PTOCNT UUO gives you the number of characters in
the output buffer, and since characters are transmitted on DMs from
the DM queues instead of from the output buffer, you cannot use the
PTOCNT UUO on a DM to decide whether or not the next PTRDS UUO will
wait. See item 221 below for the solution to this problem on DMs
(also useful on other PTYs).
216. IMP MTAPE 21 will return a gensymmed receive socket. Gensymmed sockets
are picked so the next 7 sockets (ie, a cluster of 8. sockets) are free
as well as the gensym one. The socket is returned in the second word
of the MTAPE block.
217. Note that only receive sockets may be gensymmed by IMP MTAPE 1. An
attempt to gensym a send socket will return the GMM error. There
shouldn't be any reason why somebody would want to gensym a send
socket, of course, nothing prevents doing an MTAPE 21 and adding 1 to
the returned value.
218. SIXSER sends a 0 and a -1 in the date message to verify all bits.
219. New TTYSETs:
32 gets the temporary gag bit
33 sets the temporary gag bit to given value in low-order
bit of the function word. The temporary gag bit is
automatically cleared by the RESET UUO.
34 makes the tty an IMP tty (sets IMPBIT) provided it is a pty.
35 makes the tty a DM (sets DMLIN) provided it isn't already a display.
On setting IMPBIT and DMLIN:
It is now impossible to set either of these two line characteristics
bits with the SETLIN or PTSETL UUOs or TTYSET function 1. Only the
two new TTYSET functions (34 and 35), which explicitly set these
respective bits, are legal. So if you have any programs that try to
set either of these bits, you should convert to using the new TTYSET
functions. There is no indication of failure by SETLIN, etc., to set
these bits other than the fact that the bits don't get set.
220. PTWR1S/W uuos can no longer send ESCAPE/BREAK/CLEAR characters. An
attempt to do such gets illegal uuo error message. TTYSET function 4
should be used to send escape commands, and TTYSET function 31 can be
used to clear the line editor.
221. PTRDS UUO will never wait (not even for the first char) if the 40,,0
bit is on in the byte pointer/address word that points to the place
for the returned string.
222. The functions of the LOGGER are now in the monitor. The exec mode
logger is disabled from firing up servers if MAINTM is set. The
job name = [LOGR] mechanism is gone. The INTIMS mechanism still
exists for the special user mode logger, which is normally not run.
223. IMP MTAPE 13 has been recycled to mean "curse IMP". It brings the
NCP down and sets a flag to keep it down until an IMP MTAPE 12 is
done. MTAPE 13 requires an argument of SIXBIT/KILIMP/. It is an
Illegal UUO if it is not given this argument.
224. Using ARPAnet sockets which are not in your working set as defined
by the gensym mechanism is now reported on the CTY and on the user's
console. It is not an error to do so (yet). The UPG privilege
prevents this message (ie, programs which wish to use arbitrary
absolute sockets should enable UPG first). [yes, I know it's a
crock]
225. An IMP going down message no longer brings down the NCP in itself.
It does print a warning message on the console though. Later on
it will warn users too.
226. The NCP will now reliably go down when the IMP goes down.
227. TTYSET 36 and 37 get and set the TTY GLASS bit. If the bit is on,
rubout echos as bs-sp-bs instead of using the backslash notation.
Ignored on displays.
228. The NCP will now reliably go up when the IMP comes up.
229. OBSOLETE.
230. New KILL UUO for the spy to autologout inactive jobs. Killer job
must have the MESPRV or this UUO won't do anything.
MOVEI AC,<job number>
KILL AC,
231. New DETACH function for PTJOBX UUO (function 10) detaches
the job that is on a given tty.
PTJOBX ADDR
ADDR: <tty/pty to affect>
10 ;or SIXBIT /DETACH/
This function skips on success (including if there is no job on the
given tty). The direct return is taken if there is already a
forced monitor command pending for the given tty (in which case,
you can try again momentarily and it will probably work).
232. SUPACT, SUPSCM, SUPALL, SUPSOM bits in SETACT UUO's fourth word
all work for non-displays as well as for displays.
233. PTY writing UUOs can send 9-bit chars except to a PTY owned by
the job giving the UUO. The chars ↑C, ↑B, ↑U, etc., which are
normally intercepted specially by the monitor for control
functions, are interpreted as SU-AI graphic chars instead when PTY
written by a non-owner (e.g., when PTY written to self). The owner
job can use the Backnext commands (e.g., ↑←C) to cause bucky bits
to be added to characters and to send the graphic chars ↑C, ↑B, ↑U,
etc. "Owned" means the job got the PTY by PTYGET UUO.
234. IMP MTAPE 23 takes an argument of a host down code, as follows:
RH: Time expected back up:
007777 bits → when we are expected back up. 7776 means unknown,
7777 means over a week from now. Otherwise:
007000 bits → day of week (0 = Monday, etc.)
000760 bits → hour
000017 bits → minutes/5
Time is in GMT.
LH: Why we are unavailable:
000017 Host dead reason:
0 → IMP sets this (random network lossage)
1 → IMP sets this (we took down ready without saying why)
2 → IMP sets this (we are tardy)
3 → IMP sets this (we don't exist to the knowledge of the NCC!)
4 → NCP initialization
5 → Scheduled preventative maintenance
6 → Scheduled hardware work
7 → Scheduled software work
10 → Emergency restart
11 → Power outage
12 → Software breakpoint
13 → Hardware failure
14 → Not scheduled up
15 → unused
16 → unused
17 → Coming up now
The 777700,,770000 bits are ignored. This UUO is used to tell the IMP
why we are down for later when we go down.
235. The NUL: device now exists. It is a black hole; on input it
provides an immediate EOF and simply slurps up and discards all
output.
NUL: simulates most devices reasonably, however it has the
device characteristics of no device (except that it can do input,
output, and has a long dispatch table). Also, you shouldn't
expect the more esoteric UUOs for these devices to necessarily
"do the right thing" (like IMP MTAPEs!). ENTER, LOOKUP, RENAME,
will always skip return without any argument checking, and USETO,
USETI, UGETF, CLOSE, UTPCLR, and MTAPE are no-ops.
236. Don't expect the 777400,,770000 bits in IMP MTAPE 22 to be zero, although
this is usually the case.
237. The TTYUSE bit, bit 5 (10000,,0), is no longer returned by the DEVCHR
UUO (apparently it hasn't been since 1975).
238. IMP MTAPE 22 sends a reset to the host in the first word of the argument
block. It requires the job to enable UPG. Don't do this unless you know
what you're doing. The other dangerous IMP MTAPEs have been changed to
require the job to enable UPG (which any job can).
239. Reset Reply now purges our tables the way reset does. A heinous bug
in reset fixed.
240. The IMP service now has full 96.-bit leaders and can address the full
range of hosts (all 2↑24 of them) on the network. Look at IMPSER.DOC[S,SYS]
on page 9 for more details.
241. IMP MTAPE 7 has been changed to accept a listen-style block and return
one with the foreign host/socket filled in. The only use for it is to
know where to hack after a non-waiting listen.
242. IMP MTAPE 5 has been changed to return a set of addresses. It is only
really useful to IMPSTA. Look at IMPSER.DOC[S,SYS] if you're really
interested in what these values are.
243. TTYSET 40 is SET SPEED for an auto-baud-detect line on the DCA
scanner. The allowed arguments are
0 110 baud
2 150 baud
3 300 baud
in the right half of the command word.
244. The following references to the value 20 in the UUO Manual should
substitute "DPYL0" for "20". The value DPYL0 is equal to SCNNUM
(the number of non-display TTYs), whose value is given in the
high-order 9 bits of the word at Low Core location 221.
(a) The TTREAD UUO's main description.
(b) The TTREAD UUO's description of bits 12:17.
(c) The description of Low Core location 237 (LETAB+20, should
be LETAB+DPYL0). Flush explicit name of first III's TTY.
(d) The description of Low Core location 303 (ASTAB).
245. The following references to the value 26 in the UUO Manual should
substitute "DDL0" for "26". The value DDL0 is equal to SCNNUM+DPYNUM.
The values of SCNNUM and DPYNUM are contained in the first two 9-bit
bytes of the word at Low Core location 221.
(a) The description of bits 11:17 in a Video Switch Request for
the VDSMAP UUO.
(b) The description of Low Core location 335 (VDTIE).
Also, the last example under the VDSMAP UUO should be changed to use
a different line number when TTY26 is no longer a DD.
Also, Low Core location 237 should be described as containing
LETAB+DPYL0, where DPYL0 is equal to SCNNUM (the first 9-bit byte
of Low Core 221).
Also, the description of Low Core location 270 (PTYJOB) should say to
index into the PTYJOB table with the PTY's line number minus PTYL0,
where PTYL0 is one more than the sum of the first three 9-bit bytes
in Low Core 221.
246. [Modified by entry 268 on next page.]
In buffered mode, an IN or INPUT UUO with a nonzero address field
(actually an address field ≥4) changes the buffer address of the
next buffer to be filled by the system to the address given. (The
specified value is stored in DEVIAD in the DDB.) It is the user's
responsibility to ensure that the address points to the second word
of a buffer in a well-formed buffer ring, and to update the 3-word
buffer ring header. The UUO does not actually do any input. The
proper sequence to move a buffer ring is
1. Do the IN CH,ADDR as described above
2. BLT the buffers, and modify the address pointers
3. The next IN (or INPUT) will use the new buffers.
It is not necessary to do a WAIT UUO before the IN CH,ADDR since
that UUO does a WAIT before modifying the address. Note that the
argument is the address of the next buffer into which the system
should transfer data, not the next buffer from which the user will
read data.
247. LASTDISASTERTIME now contains the time of the last call into EDDT,
in ACCTIM format. Parity errors also set this guy.
248. The status bits as returned by several IMP MTAPEs now includes the
following host down information.
Code=0 → Host up or down status unknown.
RH: Time expected back up:
777700 bits → when host is expected back up. 7776 means unknown,
7777 means over a week from now. Otherwise:
700000 bits → day of week (0 = Monday, etc.)
076000 bits → hour
001700 bits → minutes/5
Time is in GMT.
LH: Why host is unavailable:
000017 Host dead reason:
0 → unknown
1 → Host took ready line down without saying why
2 → Host is tardy
3 → Host does not exist (to the knowledge of the NCC)
4 → NCP initialization at the remote host
5 → Scheduled preventative maintenance
6 → Scheduled hardware work
7 → Scheduled software work
10 → Emergency restart
11 → Power outage
12 → Software breakpoint
13 → Hardware failure
14 → Not scheduled up
15 → unused
16 → unused
17 → Coming up now
000360 Host inaccessable reason:
0 → Destination IMP unreachable
1 → Destination host dead
2 → Communication with destination host is impossible,
because they don't have the extended leader capability
and some turkey moved us out of the 0-377 address range.
3 → Communication with destination host is prohibited
≥4 → unused
249. TTYSET operation number 41 is "hang up modem", only works on DCA
port with modem control. No-op if not implemented.
250. CALLI 400057 is WHOAMI. No argument. Compares your jobname to a list
of jobnames the system knows about; if you're in the list it saves
your job number in a cell in the system for whatever purpose the
system has in mind. However, if there is already a job that has
claimed to be who you are claiming to be, then the other job continues
and your job is stopped with an error message. So far the only name
in the list is WHOPHN, for the phantom job which writes the display on
the available channel. RESET clears the cell if you are the magic
job.
251. Include DLNSER.DOC[S,SYS]
252. TTYSET setting operations can be performed on specific TTYs just like
getting operations -- the 400,,0 bit must be on and the TTY number
should be in the 177,,0 bits of the function word. However, you can
do setting operations only on TTYs that are yours (i.e., (1) the TTY
your job is running on, (2) an INITed or ASSIGNed TTY, or (3) a PTY
that you own). Setting operations on other TTYs are no-ops, with no
indication of failure.
253. In the UPGIOT UUO for a DM, the DMATXY bit (200,,0) in the left half of
the first header word means that when this user display program finishes,
any entries in the wholine queue for this DM should be flushed (to
establish cursor stability briefly). Also, the DMXLE bit (100,,0)
will suppress all but UPGIOT output to the DM until this transfer
has finished. This is needed if this transfer is a text shifting
operation and you want to position the line editor somewhere in the
middle of the screen *after* the shifting is finished but you want
to use overlapped mode instead of waiting for the shift to finish.
254. Setting a TTY's WIDTH value to ddd, where =128 ≤ ddd ≤ =255,
completely suppresses the monitor's normal insertion of CRLFs for
long lines on the TTY. The TTY width can be set with TTYSET UUO
function 5 and with the TTY WIDTH command.
255. DEVOAD and DEVIAD no longer contain PROG in index field (LH);
haven't for a long time.
256. The CORE UUO does not guarantee that new core is zeroed before being
given to the user job; in fact, it is likely to contain randomness.
A properly written user program isn't be affected by this.
257. TTYSETs 42 and 43 get and set, respectively, the job number whose
wholine is displayed on the given terminal. Function 42 returns -1
if the terminal is not a display.
258. When displaying in graphics mode on DDs, one has to display every
fourth line in order to win. When displaying consecutive lines,
besides being atrociously slow, the DD also refuses to display more
than 6 graphic lines per UUO. The trick is to output every 4th line
and then go back to fill in every line = 1 mod 4, etc.
259. New TTYSETs:
44 Get current padding character for DM. Returns -1 if not DM.
45 Set padding character for DM. No-op if not DM.
46 Get baud rate used in DM padding calculation. -1 if not DM.
47 Set baud rate used in DM padding calculation. No-op if not DM.
260. New AAO privilege (4.4 bit) says you have ownership rights to your
disk PPN when set in passive privileges (JB2PRV). When set in active
privileges, does something completely different (for a good time, read
the code). AAO goes away on an ALIAS monitor command or a DSKPPN UUO
which sets your disk PPN.
261. New SETPPV UUO, CALLI 400124, sets passive privileges (JB2PRV) from
its argument, requires AAO active.
262. TTYSET 14 -- diddle special DM bits -- has two new operation bits
(which appear in the right half of the function word):
Bit 29 0,,100 Flag this DM as a model 3025.
Bit 28 0,,200 Flag this DM as not a model 3025.
Currently, the significance of being flagged as a model 3025 is that
different padding is used, DM128 is assumed (can display control
characters), and when the cursor is supposed to be "off screen", it
is positioned at home instead (since the 3025 cannot make the cursor
disappear.
The DM3025 bit appears in the right half of the DM flag word,
which is returned by TTYSET 21. DM3025 is 0,,200 (bit 28) in DMFLAG.
263. The DDCHAN UUO, if bit 2 (100000,,0 bit) is set in the AC and if you
have the DEV privilege ACTIVE, takes bits 10-17 (377,,0) of AC as the
use code instead of using your job number. DEVPRV must be SETPRVed.
264. As of 8.73/A, the LOGIN UUO allows a phantom (ie, a job with JLOG off)
to set its PPN. It will not allow the phantom to set its privileges;
nor will it set JLOG (ie, the phantom remains a phantom). This allows
FTP programs to win without running with the REA and WRT privileges.
Previous systems make LOGIN illegal unless JLOG is clear and JACCT is
set.
265. The UUO Manual's sample calling sequence for the TMPCRD UUO uses
the TMPCOR UUO by mistake. Should say "TMPCRD AC,".
266. 8.73/A allows the "read info" MTAPE function for DSK, however, the
password is not returned unless the INF privileged is enabled. Previous
systems make this an illegal UUO unless INF is enabled.
267. Only a DISMIS UUO may be used to dismiss a KA-10 spacewar program.
All other UUO's are illegal on the KA-10.
268. A buffered mode IN or INPUT with nonzero eff. addr. (actually must be >3)
now checks the argument to make sure the buffer pointed to is empty, i.e.,
the word at the specified address must have its sign bit off. If not, the
UUO searches through the buffer ring and uses the first empty buffer it
finds. If all buffers are full, it uses the one pointed to by the UUO.
If it tries 100 (octal) buffers without finding either an empty one or
the end of the ring, it goes to UUOERR. This means the new buffers must
be set up before doing the UUO; the new sequence of events is
1. Do a WAIT
2. Move the buffers around in core
3. Do the IN UUO
269.
∂14-Nov-78 0521 TVR ADSMAP
CAVEAT: If you have more than one job connected to your Datadisk console and
you do a temperary audio switch selection via ADSMAP, a RESET on any
of your jobs will cancel the selection even if that job was not the
one which made the selection.
Perhaps this should be noted in the next UUO manual?
270. [THIS ENTRY IS NOW OBSOLETE! SEE 272 BELOW.]
New procedure for moving output buffers (cf. 268 above):
1. If you have a partially filled output buffer, output it by
OUT or OUTPUT UUO.
2. Give an OUT or OUTPUT whose effective addr points to any
of what will be the new output buffers. This UUO will
force out any waiting buffers, put the new buffer address
into the buffer ring header, and set the sign bit of the
first word of the header to indicate that the new ring
is not initialized.
3. Now set up the ring pointers in the new buffers.
4. Now do an OUT or OUTPUT (eff addr 0) which will simply
check the new buffer ring and make it ready for use, not
actually causing any output.
This procedure will work even if the old and new buffer areas
overlap. If, however, you have a partially filled buffer you
don't want to output until after you move the buffers, you have
to do steps 2, 3, and 4, then move the data from the old buffer
into the new buffer, being sure to keep the byte pointer in the
buffer header correct.
271. RUNMSK, GDPTIM, and LTHUUO are now completely flushed.
272. 270 is obsolete. New procedure for moving output buffers:
First move the buffers, then do the OUT UUO with nonzero E.
This will find the first empty buffer after a full buffer
and set DEVOAD to it. You set up the buffer header yourself,
as for input.
273. LIV privilege now means only that the job is never auto-logged-out
(it may be detached). It is a passive priv but explicitly disabled
whenever any program is run by monitor command. New passive priv
DET means that auto-detach is preferred to auto-logout; can be
set by anyone by command or UUO. (DETPRV = 0,,100000)
274. Location 341 points to the DDBCNT job table. This table has one
word per job number, which is AOSed on an INIT or OPEN for any
device other than TTY or DSK (or new-style UDP), and on an ENTER
on DSK (or...). It is SOSed on RELEASE of non-DSK, non-TTY, and
either on CLOSE or RELEASE of a disk channel open for writing.
It is zeroed on RESET. The table is meant to help smart autologout;
the spy will prefer to log out jobs for which this entry is zero.
275. The owner of a PTY gets (if enabled) the INTTTC interrupt if the
PTY becomes a DM or a non-DM, or goes into or out of image mode.
276. Section 13.4 on DM display output should mention that the character
33 sent to a DM128-type Datamedia causes the next character to be
displayed no matter what it is (even if it is a control character).
For DM3025- type DMs, however, the next char is displayed only if it
is a control character (0:37) or 177 (the remaining characters may
cause control functions when following a 33.
277. The P2UUO UUO (CALLI 400125) is used to test and modify the state of
P2 in a FTP2SP system. The AC field of the UUO (not the contents of
the AC, but the field itself) determines the precise UUO function:
0 - TEST P2 MEMORY UP
1 - TEST P2 RUNNING
2 - SET P2 MEMORY UP
3 - SET P2 MEMORY DOWN
4 - GET P2 MEMORY AS HISEG WRITEABLE
5 - GET P2 MEMORY AS HISEG WRITE PROTECTED
Function 0 takes the skip return if P2's memory is working and
connected to the system. It takes the direct return if the memory
was nonexistent when the system was reloaded or has been declared
down at reload or while the system was running.
Function 1 takes the skip return if P2 is actually running its
system. (The P2 system might be hung, or even halted, but it
has set the flag saying it's up and has not been declared down
by either processor.)
Function 2, which requires the DEV privilege, declares that P2's
memory is now online if it had been down. Note that if the memory
is really still not connected, this will crash the system! This
function always takes the direct return. (It stops the job if
not privileged.)
Function 3, which also requires DEV, declares P2's memory down. It
stops the P2 system if it had been running. It takes the skip
return if successful--it requires three pages of other memory to
be available to hold the system data normally shared between the
two processors.
Note that functions 2 and 3 require the DEV privilege in the job's
ACTIVE privileges.
Functions 4 and 5 get all of P2 memory as your job's upper segment,
writeable or write protected respectively. They both take the skip
return if successful. They will fail if P2 memory is down; function
4 will also fail if you do not have the ACW privilege enabled.